Что такое архитектура ПО?

Архитектура ПО - представляет собой многоуровневую систему абстракций. На каждом уровне абстракции сотрудничают друг с другом, имеют четкий интерфейс с внешним миром.

Абстракция - выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя.

Объектно-ориентированная архитектура - архитектура, в которой на каждом уровне интерфейс абстракции строго отграничен от реализации. Реализацию можно изменять, не затрагивая при этом интерфейс. Изменяясь внутренне, абстракции продолжают соответствовать ожиданиям внешних клиентов. Кроме того, общее поведение достигается общими абстракциями и механизмами.

Качество абстракции править

Измеряется с помощь пяти критериев: зацепление, связность, достаточность, полнота и примитивность.

Зацепление - степень глубины связей между отдельными модулями (а также классами и объектами). Систему с сильной зависимостью между модулями гораздо сложнее воспринимать и модифицировать. Сложность системы может быть уменьшена путем уменьшения зацепления между отдельными модулями (а также классами и объектами).

Примитивность - операции, которые требуют только доступа к внутренней реализации абстракции.

Полнота - наличие в интерфейсной части класса всех характеристик абстракции. Полнотой характеризуется такой класс или модуль, интерфейс которого гарантирует все для взаимодействия с пользователями.

Достаточность - наличие в классе или модуле всего необходимого для реализации логичного и эффективного поведения.

Связность - степень взаимодействия между элементами модуля (класса или объекта), характеристики его насыщенности. Наименее желательной является связанность по случайному принципу, когда в одном классе или модуле собираются совершенно независимые абстракции. Наиболее желательной является функциональная связанность, при которой все элементы класса или модуля тесно взаимодействуют в достижении определенной цели.

Как качество ПО связанно с архитектурой ПО? править

Качество программного продукта закладывается благодаря простой и гибкой архитектуре с качественными абстракциями и гарантируется процессом разработки. Когда говорят, что качество гарантируется процессом разработки имеют в виду две больших темы: организационную сторону вопроса и автоматизацию процесса разработки.