Однією зі складових процесу розробки продуктів програмного забезпечення є розробка архітектури програмного забезпечення.
Існує чимало визначень поняття архітектури програмного забезпечення. Загалом всі формулювання можна поділити на дві групи. Перша група пов’язатна з розіленням програмної системи на великі складові частини, друга – з формуванням певних конструктивних рішень, які з розвитком системи не мають змінюватись.
Існує також думка від авторитетних фахівців у програмній інженерії, що архітектура програмного забезпечення є у великій мірі суб’єктивним поняттям. Якщо поглянути на це питання дуже спрощено та у рамках конкретного проекту, що розробляється, то архітектуру ПЗ можна розглядати як утверджену у команді розробників точку зору щодо результатів проектування програмної системи.
Проте існує стандарт IEEE 1471 щодо визначення цього поняття.
Архітектура – це базова організація системи, втілена в її компонентах, їх відносинах між собою і з оточенням, а також принципи, що визначають проектування і розвиток системи.
У цьому стандарті також визначаються такі значущі терміни:
Система – це набір компонентів, об’єднаних для виконання визначеної функції або набору функцій. Термін «система» охоплює окремі застосування, системи в традиційному розумінні, підсистеми, системи систем, лінійки продуктів, родини продуктів, цілі корпорації та інші агрегації, що мають відношення до цієї теми. Система існує для виконання однієї або більше місій в своєму оточенні.
Оточення, або контекст, визначає хід і обставини економічних, експлуатаційних, політичних і інших впливів на систему.
Місія – це застосування або діяльність, для якої одна або кілька зацікавлених сторін планують використовувати систему відповідно до певного набору умов.
Зацікавлена сторона – це фізична особа, група або організація (або її категорії), які зацікавлені в системі або мають пов’язані з нею завдання.
Відповідно до стандарту IEEE 1471 можна сформулювати метамодель для визначення архітектури
Архітектура програми або комп’ютерної системи – це структура або структури системи, які включають елементи програми, видимі ззовні властивості цих елементів і зв’язки між ними.
Не існує такої архітектури, яку можна було б визнати однозначно хорошою або однозначно поганою. Варіанти архітектури можна оцінювати, і це один з факторів, що обґрунтовують підвищену увагу до архітектури, проте проводити таку оцінку можна тільки в контексті конкретних завдань.