СИСТЕМНАЯ АРХИТЕКТУРА И ПРОГРАММНАЯ АРХИТЕКТУРА
На протяжении последних 5-10 лет мы часто выступали с сообщениями о программной архитектуре. Все это время среди слушателей находился кто-то, кто спрашивал: «Почему вы говорите о программной архитектуре? Ведь системная архитектура не менее важна!» или «В чем разница между программной и системной архитектурой?» На самом деле, как выясняется, разница небольшая. То, что мы обычно говорим именно о программной архитектуре, объясняется желанием подчеркнуть важность принимаемых архитектором программных решений, которые распространяются на качество продукта в целом. Случаи, когда в процессе создания программной архитектуры соображения по поводу системы не принимаются в расчет, крайне редки. К примеру, если вы хотите, чтобы архитектура была высокопроизводительной, у вас должно быть хотя бы некоторое представление о характеристиках той аппаратной платформы, на базе которой она будет работать (скорость процессора, емкость памяти, скорость обращения к диску); кроме того, вы должны знать характеристики всех устройств, с которыми системе предстоит взаимодействовать (традиционные устройства ввода-вывода, сенсоры, исполнительные механизмы), а в дополнение к этому желательно найти информацию о характеристиках сети (в первую очередь, о ее пропускной способности). Если архитектура должна быть сверхнадежной, вам, опять же, придется иметь дело с аппаратной частью — в этом случае с интенсивностью отказов, наличием резервирования средств обработки и сетевых устройств. И так далее и тому подобное. Архитекторы редко обходят стороной вопросы аппаратного обеспечения. Итак, проектируя программную архитектуру, следует представлять себе всю систему — как аппаратную, так и программную части. Отказываясь от этого принципа, вы напрашиваетесь на неприятности. Ни один инженер не возьмется прогнозировать характеристики системы, если специфицирована лишь одна из ее частей. И тем не менее мы продолжаем настаивать на употреблении термина «программная архитектура». Почему же все-таки не «системная»? Дело в том, что большинство альтернатив архитектора связано не с аппаратурой, а с программным обеспечением. Речь не идет о том, что решений относительно аппаратной части принимать не надо, — просто она может быть неподконтрольна архитектору (именно такая ситуация складывается при разработке системы, которая должна работать на случайных клиентских машинах с подключением к Интернету); с другой стороны, все решения, касающиеся аппаратуры, могут приниматься другими лицами (по экономическим и правовым мотивам или согласно стандартам); кроме того, аппаратура имеет обыкновение со временем заменяться. Все вышеприведенные факторы позволяют нам на вполне законных основаниях сосредоточиться на программной части архитектуры — именно здесь принимается большинство основополагающих решений, существует множество альтернатив и возможностей добиться успеха (или привести к полному провалу!). —RK
|