понедельник, 13 октября 2008 г.

Что такое Framework?

Часто, когда говорят о разнице между каркасом(famework) и библиотекой,
то указывают главное различее: при использовании библиотеки вы вызываете
код библиотеки на исполнение, а в случае с каркасом код каракаса вызывает
ваш собственный код. Но интересно: конкректно, на какие уровни жизненного цикла
программной системы накладывает ограничение каркас?
Рис.1 - Ограничения каркаса

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

Согласно статьям на wikipedia.org, в которых делается ссылка на труд "Meta Patterns—A Means For Capturing the
Essentials of Reusable Object-Oriented Design" Вольфганда Прии, приложение созданное при использовании
каркаса состоит из холодных точек, которые описывают общую архитектуру программной системы и являются неизменными
в каждом экземпляре каркаса приложений. И горячих точек, представляющие собой код добавленный программистом,
который реализует нужную функциональность согласно конкретному проекту.
Пытаемся изобразить это графически, голубые шарики - это объекты самого каркаса,
а красные разработанные в рамках конкретного проекта. См. рис 2.

Рис 2. Части всей системы


На рисунке, показан каркас, реализующий архитектуру MVC.

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