Разговаривал сегодня с коллегами на тему "зачем нам нужен UML и хорошо ли это, и какие задачи решаются".
В итоге пришли к мнению, что я лично (про других коллег пока не договорились) решаю следующие задачи:
1. Управление сложностью проекта (она - логарифмируется путём деления системы на архитектурные слои UML в виде "матрёшки"). И пусть это - http://18delphi.blogspot.ru/2013/09/blog-post_1303.html - вас не пугает (и не путает). Там - ОТДЕЛЬНЫЙ разговор.
2. Преодоление "недостаточной" выразительности целевых языков (например в Delphi 7 нету шаблонов и STL в частности, а также "примесного" наследования, а в C++ нету мета-классов и рефлексии).
3. Облегчение рефакторинга (например - предварительная шаблонизация дублирующегося кода и его последующая свёртка, а также выделение и использование шаблонов в стиле GoF и упаковка их в добавляемые стереотипы и "галочка" singleton на почти любом классе - тому ЯРКИЙ пример).
4. Поддержка ночных сборов (модель показывает все нужные зависимости и по ней удобно строить "сборочные скрипты" и те же dpr - в частности).
5. Физическая связь требований и кода. Трассировка в обе стороны. (Хотя бы на уровне прецедентов, от проектного класса ставиться связь реализации к UseCase).
6. Общение с коллегами в стиле construction by example ("посмотри на эти три диаграммы и нарисуй три квадратика подобных данным, но с другими аспектами").
7. Документирование кода в общей базе знаний (это отчасти относится к управлению сложностью).
8. Автоматическое построение биндинга сущностей и понятий приложения в словарь скриптовой машины вообще и тестовой в частности.
Если кому-то интересны эти темы, то я могу попробовать их раскрыть.
В итоге пришли к мнению, что я лично (про других коллег пока не договорились) решаю следующие задачи:
1. Управление сложностью проекта (она - логарифмируется путём деления системы на архитектурные слои UML в виде "матрёшки"). И пусть это - http://18delphi.blogspot.ru/2013/09/blog-post_1303.html - вас не пугает (и не путает). Там - ОТДЕЛЬНЫЙ разговор.
2. Преодоление "недостаточной" выразительности целевых языков (например в Delphi 7 нету шаблонов и STL в частности, а также "примесного" наследования, а в C++ нету мета-классов и рефлексии).
3. Облегчение рефакторинга (например - предварительная шаблонизация дублирующегося кода и его последующая свёртка, а также выделение и использование шаблонов в стиле GoF и упаковка их в добавляемые стереотипы и "галочка" singleton на почти любом классе - тому ЯРКИЙ пример).
4. Поддержка ночных сборов (модель показывает все нужные зависимости и по ней удобно строить "сборочные скрипты" и те же dpr - в частности).
5. Физическая связь требований и кода. Трассировка в обе стороны. (Хотя бы на уровне прецедентов, от проектного класса ставиться связь реализации к UseCase).
6. Общение с коллегами в стиле construction by example ("посмотри на эти три диаграммы и нарисуй три квадратика подобных данным, но с другими аспектами").
7. Документирование кода в общей базе знаний (это отчасти относится к управлению сложностью).
8. Автоматическое построение биндинга сущностей и понятий приложения в словарь скриптовой машины вообще и тестовой в частности.
Если кому-то интересны эти темы, то я могу попробовать их раскрыть.
Комментариев нет:
Отправить комментарий