Подходы к проектированию программ в целом



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

Объектно-ориентированное проектирование состоит в описании структуры и поведения проектируемой системы, то есть, фактически, в ответе на два основных вопроса:

· Из каких частей состоит система.

· В чём состоит ответственность каждой из частей.

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

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

Сейчас мы говорим об общей методологии составления программ. Конечно, не стоило бы заводить об этом разговор, если бы мы ограничивались написанием только небольших программ, т.е. программ, содержащих до нескольких сотен строк. Такие программочки легко охватить взором как единую и неделимую единицу. Однако по мере увеличения размера программы такая монолитность становиться не удобной. Поэтому программа должна быть разбита на ряд независимых частей, называемых модули. А сам процесс разбиения назовем декомпозицией.

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

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

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

Правила декомпозиции

При декомпозиции руководствуются следующими правилами.

Каждое расчленение образует свой уровень

Каждая подзадача должна иметь один и тот же уровень рассмотрения. Исходная система располагается на нулевом уровне. После её расчленения получаются подсистемы первого уровня. Расчленение этих подсистем или некоторых из них приводит к появлению подсистем второго уровня и т.д.

Система расчленяется только по одному, постоянному для всех уровней, признаку

В качестве признака декомпозиции может быть:

· функциональное назначение частей,

· конструктивное устройство (вид материалов, формы поверхностей и др.),

· структурные признаки (вид схемы, способы и др.),

· виды этапов и процессов (жизненный цикл, физическое состояние и др.),

· предметные характеристики (экономические, информационные, технологические и др.),

· и другие.

Каждая подзадача может быть решена независимо

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

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

Полученные решения могут быть объединены вместе, позволяя решить исходную задачу. Но при этом вычленяемые подсистемы должны взаимно исключать друг друга.

Например, если при перечислении частей автомобиля опустить, допустим, мотор, то функциональное взаимодействие остальных подсистем не обеспечит нормальное функционирование всей системы (автомобиля) в целом.

Глубина декомпозиции

С проблемой декомпозиции исследователи ранее сталкивались при проектировании и анализе сложных административных, хозяйственных, производственных систем. В этих процессах очень часто «... непосредственное изучение объекта в целом как системы невозможно из-за его сложности. В этих случаях приходится расчленять объект на конечное число частей, учитывая связи между ними, характеризующие их взаимодействие. Здесь и начинается интерпретация исследуемого объекта как сложной системы, а его частей – как подсистем.

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


Дата добавления: 2020-01-07; просмотров: 269; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!