Не так давно выкладывал ссылку на работу о сагах (https://t.me/microservices_arch/82), пришло время работы о модульности. Еще в 71-м году Девид Парнас описал подход к модульности через сокрытие информации как более предпочтительный, чем подход, в котором модули являются шагами процесса. Физическое воплощение модульности через сокрытие информации мы и видим в том числе в микросервисах, когда скрываем детали реализации сервиса, включая его данные («difficult design decisions or design decisions which are likely to change»), за API.
…it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. Since,in most cases,design decisions transcend time of execution, modules will not correspond to steps in the processing. To achieve an efficient implementation we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules.
Читать статью полностью: https://prl.ccs.neu.edu/img/p-tr-1971.pdf
…it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. Since,in most cases,design decisions transcend time of execution, modules will not correspond to steps in the processing. To achieve an efficient implementation we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules.
Читать статью полностью: https://prl.ccs.neu.edu/img/p-tr-1971.pdf