В чем разница между абстракцией и разложением? [закрытый]


В программной инженерии есть два основных понятия на стадии проектирования, которые являются abstraction и decomposition, но я не могу получить различия между ними?

2 3

2 ответа:

Обе концепции являются основными методами анализа и проектирования. Они взаимосвязаны и обычно используются вместе при разработке программного обеспечения. Мы используем их, хотя и не всегда осознаем это. Более глубокое понимание этих понятий помогает быть более точным и эффективным в A&D.

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

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

Декомпозиция - это применение старого доброго принципа "разделяй и властвуй" к программному обеспечению. развитие. Это метод классификации, структурирования и группировки сложных элементов, чтобы в конечном итоге получить более атомарные элементы, организованные определенным образом и легче управляемые. Во всех фазах есть много примеров:

    Функциональная декомпозиция сложного процесса на иерархическую структуру более мелких подпроцессов и видов деятельности
  • ]}
  • высокого уровня структура комплексного применения 3-х уровней - интерфейса, логики и данных.
  • классовая структура комплекса домен
  • пространства имен как общая концепция разбиения глобальной области на несколько локальных
  • UML пакеты являются прямым использованием декомпозиции на уровне модели-используйте пакеты для организации вашей модели

Абстракция-это как-то более общий принцип, чем разложение, своего рода "отец всех принципов":)

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

Декомпозиция - это способ разбить ваши системы на модули таким образом, чтобы способ, которым каждый модуль обеспечивает различные функциональные возможности, но может влиять и на другие модули. Чтобы понять декомпозицию достаточно ясно, вы должны сначала понять понятия ассоциации, композиции и агрегации.