На этот вопрос нет однозначного ответа, потому что «архитектура программного обеспечения» и «дизайн программного обеспечения» имеют множество определений, и для них нет канонического определения.
Хороший способ думать об этом - заявление Лена Басса, Пола Клементса и Рика Казмана о том, что «вся архитектура - это дизайн, но не весь дизайн - это архитектура» [Архитектура программного обеспечения на практике]. Я не уверен, что полностью согласен с этим (потому что архитектура может включать в себя другие действия), но это отражает суть того, что архитектура - это проектная деятельность, которая имеет дело с критическим подмножеством дизайна.
Мое слегка легкомысленное определение (найдено на определений SEI page) заключается в том, что это набор решений, которые в случае неправильного принятия приводят к отмене вашего проекта.
Полезная попытка разделения архитектуры, дизайна и реализации как концепций была сделана Амноном Иденом и Риком Казманом несколько лет назад в исследовательской статье под названием «Архитектура, дизайн, реализация», которую можно найти здесь: http://www.sei.cmu.edu/library/assets/ICSE03-1.pdf. Их язык довольно абстрактный, но они упрощенно говорят, что архитектура - это дизайн, который может использоваться во многих контекстах и предназначен для применения во всей системе, дизайн - это (ошибочно) дизайн. который может использоваться во многих контекстах, но применяется в определенной части системы, а реализация - это дизайн, специфичный для контекста и применяемый в этом контексте.
Таким образом, архитектурным решением может быть решение интегрировать систему через обмен сообщениями, а не RPC (так что это общий принцип, который может применяться во многих местах и предназначен для применения ко всей системе), проектное решение может заключаться в использовании главного / подчиненная структура потока в модуле обработки входных запросов системы (общий принцип, который может использоваться где угодно, но в данном случае используется только в одном модуле) и, наконец, решение о реализации может заключаться в переносе ответственности за безопасность с маршрутизатора запросов в обработчик запросов в модуле диспетчера запросов (решение, относящееся только к этому контексту, используемому в этом контексте).
Надеюсь, это поможет!
person
Eoin
schedule
13.10.2013