Что такое дизайн и архитектура программного обеспечения?
И как это может улучшить программные продукты?
Давайте рассмотрим сценарий.
Предположим, вы присоединяетесь к проекту, который находится уже в разработке некоторое время.
Вы смотрите на код проекта, и вы не можете понять, для чего предназначены эти куски кода, так как он плохо организован, и проектной документации не существует.
Вы даже не знаете, с чего начать.
Это все признаки того, что проект не был хорошо разработан с самого начала.
Или, допустим, вы сейчас работаете над персональным проектом.
Когда вы начинали, вы не были уверены, какая конкретно функциональность должна быть реализована, но тем не менее вы начали кодирование.
Для вас не имело значения, что код будет неорганизованным, потому что вы были единственным, кто работал над проектом.
И предположим, вы придумали замечательную новую функцию для своего продукта, но при ее реализации вы нарушили программу в других местах. И теперь вы должны все исправлять во многих местах своего кода.
Чего не произошло бы, если бы вы правильно и хорошо с самого начала спроектировали бы свой продукт.
И такие сценарии довольно часто встречаются в индустрии программного обеспечения, что показывает, почему дизайн и архитектура программного обеспечения так полезны.
В этом разделе вы узнаете, как применять принципы и паттерны дизайна и архитектуры для создания многоразовых и гибких программных систем. Вы узнаете, как задокументировать дизайн и архитектуру программного продукта визуально.
Итак, в чем разница между дизайном программного обеспечения и архитектурой программного обеспечения?
Роль дизайнера программного обеспечения или архитектора программного обеспечения может сильно отличаться от компании к компании.
На это влияют такие характеристики, как размер компании, объем проекта, опыт команды разработчиков, организационная структура и возраст компании.
В некоторых компаниях могут работать отдельные дизайнеры или архитекторы.
В других компаниях эта работа может выполняться членом или членами команды разработчиков.
И как правило, дизайнер программного обеспечения отвечает за определение программного решения для конкретной проблемы путем проектирования деталей отдельных компонентов и их обязанностей.
Дизайнер программного обеспечения отвечает за просмотр всей системы и выбор подходящих фреймворков, систем хранения данных, за решения и определения взаимодействий компонентов друг с другом.