Чтобы понять, как проектировать конкретное программное решение, очень важно знать, как связаны между собой каркасы и шаблоны. Стандартное определение каркасов — наборы взаимосвязанных классов для многократно используемого проектирования определенного класса программного обеспечения. Рабочий термин в определении — «класс программного обеспечения». Под этим подразумевается, что он выполняет определенную функцию в рамках программного решения. Каркасы часто основываются на шаблонах — универсальных решениях задачи с программной реализацией в определенном контексте. Основное различие между каркасами и шаблонами заключается в том, что каркасы являются реализацией программных конструкций, а шаблоны задают определение того, как решить ту или иную задачу с программной реализацией.
Смысл применения основанных на шаблонах каркасов в том, что они обеспечивают согласованность всего решения и могут повысить продуктивность. В динамичной среде с их помощью можно сделать решение более расширяемым. Кроме того, каркасы позволяют свести к минимуму объем кода, необходимого для реализации решения, благодаря чему решение легче сопровождать.
Чтобы максимально использовать преимущества шаблонов архитектуры и проектирования программного обеспечения, архитектор всегда должен стараться найти ответ на следующие вопросы.
· Какую задачу мне нужно решить?
Поймите концепцию задачи, для которой предназначено проектируемое решение. Архитектура программного обеспечения начинается на концептуальном уровне, и архитектор обязательно должен охватывать картину в целом. Способность лаконично изложить решение в нетехнических терминах является хорошим показателем понимания области решения задачи.
· Как такая задача была решена в прошлом?
Для любого программного решения велика вероятность того, что похожая задача уже была решена в прошлом. Узнайте, как решалась эта задача, и по возможности примените тот же проект для решения новой задачи.
· Как может это решение расширяться в будущем?
Многие шаблоны задуманы так, чтобы обеспечить определенный уровень расширяемости для решения. Если требования к расширяемости решения понятны, может быть полезным применить такие шаблоны на ранней стадии проектирования.
Характеристики качества ПО: функциональность, надежность, удобство использования, эффективность, удобство поддержки, портативность.
- Эффективность программного продукта оценивается как с позиций прямого его назначения - требований пользователя, так и с точки зрения расхода вычислительных ресурсов, необходимых для его эксплуатации.