Абстрагирование

Общие подходы к разработке информационных систем

Как можно выразить конкретные различия между большой и малой системами? На некотором уровне различия легко указать. Электронная таблица или приложение для поиска книг в личной библиотеке являются малыми, а приложение, которое планирует производство на машиностроительном заводе, конечно, большое. Таким образом, первый критерий при сравнении больших приложений с малыми - то, насколько трудно построить это приложение. Малые приложения довольно легки в построении, используются доступные инструментальные средства, требуются небольшие временные, материальные, человеческие ресурсы при их построении. Большие приложения трудны в построении даже с использованием доступных инструментальных средств, требуются большие временные, материальные, человеческие ресурсы при их построении.

Линия раздела между большими и малыми системами слабо уловима. Тем не менее, два обстоятельства относительно ясны.

1. Большие системы необходимы для больших и среднего размера организаций.

2. Распределенные системы по своей природе более сложные, чем централизованные.

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

Существует два механизма разделения и управления сложностью в больших приложениях: абстрагирование и инкапсуляция.

Абстрагирование - аналитический метод для разделения систем на множество слоев деталей, составляющих систему.

Инкапсуляция - процесс объединения информации и поведения системы в некоторую новую сущность, именуемую компонентом.

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

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

Предположим, вы захотели описать процесс ходьбы. Вы можете описать этот процесс на разных уровнях детализации, которые называются уровнями абстракции.

1. Теоретически вы сможете описать движение миллионов электронов, атомов и молекул в теле идущего человека. Однако такое описание будет непонятным и неприемлемым для разработки. Никто не сможет разобраться в огромном множестве запутанных деталей на атомарном уровне описания идущего человека.

2. На более высоком уровне абстракции тело человека состоит из миллионов клеток, но существуют слишком много клеток для описания идущего человека на этом уровне детализации.

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

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

Сокращение количества видимых одновременно деталей - очень важный момент при описании и проектировании сложных систем. Как показано в примере, основной метод сокрытия деталей - определение конкретных уровней абстракции в приложении.