АсОП в разработке веб-ориентированного ПО

BlaxBlax   

Попала в руки интересная статья на тему. Аспектно-ориентированный подход в разработке ПО (линка к сожалению нет, в. pdf)

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

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

Например, есть CMS, и есть аспект безопасности. Классы и функции в данном аспекте могут быть самыми разными, и сделать «срез» (например поставить замеры потребляемых ресурсов) в данном аспекте — сложная задача, надо «пролезть» весь проект и…

Или другой вариант: есть сайт, и есть аспект SEO этого сайта — соответствующие методы, которые влияют на этот аспект, находятся тоже в разных местах. Если потребуется провести комплексный анализ того, что есть по сео — придётся опять лезть, ковырять (примеры могут быть не совсем удачные, но по степени геммороя кажутся наглядными :).

АсОП позволяет это делать просто и быстро.

Единственный «нюанс» в том, что для реализации этого подхода нужно, чтобы среда разработки или язык предоставляли эти возможности, а иначе просто получится ненужный перерасход времени и труда. И смысла что-либо подобного рода делать до появления первой надобности — нет.

В ПеХеПе вроде воткнули что-то реализующее. Интересно, можно ли изобрести что-то на парзере.

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

p. s. Да, так же можно строить и апгрейды функционала (хотя, пожалуй это плохой путь :)

Окружают...
Окружают...
Антон  Минкин
In a Barbie World...
In a Barbie World...
Михаил  Шевцов
rezook

Ничегонепонял

Blax
Ничегонепонял

:( плохо написал значит.
Поищу линку на статью

от тут http://mag.phpclub.ru/2006/jan-feb/phpi17_2006.pdf
11 страничка

KGT

Мое мнение – парадигма – это типа веб 2.0, как где-то писал Лебедев, "интересный маркетинговый ход неизвестно кому нужный".
А так, исли есть задачи:
— сосредоточить CEO-код в одном менсте;
— сделать возможность замеров производительности;
— сделать возможность апгрейдов функционала;
и т.д. и т.п.
то нормальные срецы могут сделать это используя и ООП, и функциональное программирование (видел оч. хорошие примеры, например, тот же интерпретатр PHP, который, насколько я знаю на С написан, не на С++). Просту сначала надо думать, а потом програмить :)

А вот что такое "таггирование в сайтах", к сожаление не знаею, прошу автора пояснить :)

KGT

Да, и не срецы а спецы, сори, проверки граматики здесь нема :)

Blax
Да, и не срецы а спецы, сори, проверки граматики здесь нема :)

можно писать от пользователя и тогда есть возможность поправить своё сообщение в течении некоторого времени.

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

Мне понравилось, что с лёгкостью можно делать аспектные ну или контекстные срезы. Даже на работающей уже системе.

Попробую абстрагироваться:
Объектная иерархия: автомобиль, мост, колесо, покрышка, колпак, гайка. Всё отлично работает. Вдруг (или не вдруг :) ) возникает новый аспект – внешний вид тачки. Создаётся срез по объектам: покрышка, колпак, гайка.
С анализом их атрибутов, отвечающих за "крутость". При этом, если если среда позволяет сделать это быстро – почему нет? А если нужен анализ 100 объектов. В 5 аспектах….

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

Надесюсь не заплутал в словах опять :)

p.s.

таггирование

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

интересного никому не нужного маркетингового хода

:) Хотя мне кажется это не верно, хотя это уже совсем другая история.

KGT

Не знаю как цитировать… но,
[По сути: Этот подход не отрицает ООП, скорее дополняет. Естественно и без него раньше обходились (как ещё раньше без ООП, а ещё раньше кодировали в инструкциях процессору, а ещё раньше компов не было :) ).]

Ну это да, а еще раньше небыло кремов для рук и ног (отдельно), а также (!) для левой руки и правой руки (тоже отдельно!) :)

И еще, уже серьезно, хочу заметить, с момента возникновения С, на мой субъективный взгляд, ничего координально не изменилось. С превратился в С++ (ну да, немного удобнее, но суть та же), С++ – в яву – вообще мало чего изменилось, Java+C++ – в С#, тут ничего не могу сказать, не знаю, но думаю что тоже ревалюционного скачка нету. Вот, Пролог, например, да, хотя-бы попытка, только не знаю хронологическую последовательность этих шедверов, да и пролог че то не пользуется популярностью (хотя, конечно, это не совсем наша тема).

[Мне понравилось, что с лёгкостью можно делать аспектные ну или контекстные срезы. Даже на работающей уже системе. ]

Хотелось бы попросить автора дать пример из PHP, типа PHP ->Срез(полный);
Как это у них выглядит?

[Попробую абстрагироваться:
Объектная иерархия: автомобиль, мост, колесо, покрышка, колпак, гайка. Всё отлично работает. Вдруг (или не вдруг :) ) возникает новый аспект – внешний вид тачки. Создаётся срез по объектам: покрышка, колпак, гайка.
С анализом их атрибутов, отвечающих за "крутость". При этом, если если среда позволяет сделать это быстро – почему нет? А если нужен анализ 100 объектов. В 5 аспектах…. ]

Оч. просто, делаем классы:
class Колесо: pulic Деталь
{

};

class Мост: public Агрегат
{
Колесо колесо1;
Колесо колесо2;
Колесо колесо3;
Колесо колесо4;
}

class Машина: public СложныйАгрегат
{
private:
void* Мост;

public:
Срез СрезDOIT(НомерАспекта=1)
{
//релиз.
}
} Ауди;

И усё. :)

KGT

Пока "разговорился" хочу еще добавить. Это как с экстремальным программированием, всего то делов:
— делай читаемый код (с комментариями)
— сразу вставляй тесты
— делай, по возможности, вещи которые можно запустить как можно быстрее.
А поскольку _дисциплинированных_ программеров что в Америке что в Волгограде, в достаточном количестве, не найдешь, то еще добавили четвертный пункт, ДВОЕ за компом, что-бы друг друга десциплинировали.
Тоже парадигма, или метод. Пример, 1–2 года назад, в Яндексе, знание "экстремального программирования" оч. приветствовалось, а сейчас – тишина. Нужны специалисты, которые умеют _работать_ в указанной Яндексом области и никакого экстремального программирования. Умерает парадигма. Как и многие другие.

rezook

Вот вы злые :-)

З.Ы. цитировать можно через общепринятое [ q ] естественно, пробелы между скобками убираем [ /q ]

Blax

KGT:
ну не знаю что сказать :)

в том, что люди ищут новые практики и методики (ХP это набор практик) мне кажется логичной тенденцией. А то, что из них время подтверждает немногие – тоже логично. Тут не о чем спорить – посмотрим, может это тоже тупичёк, а может будет применятся.

Создание и продвижение сайтов для бизнеса только кликни мы откликнемся
8-800-77-55-123 Меню
В порядке и на условиях, определённых Федеральным законом от 27 июля 2006 года № 152-ФЗ «О персональных данных». Согласие на обработку следующих моих персональных данных: фамилии, имени, отчества, года, месяцы, даты и места рождения, пола, гражданства, места жительства, в том числе сведения о регистрации по месту жительства, месту пребывания, места работы, социального положения (статуса), реквизитов документа, удостоверяющего личность. Обработка моих персональных данных Оператором осуществляется исключительно в целях защиты моих прав на регистрацию доменного имени, услуги по созданию и продвижению сайтов, услуги по размещению рекламных компаний в интернет и обеспечения соблюдения законов и иных нормативных правовых актов, связанных с предоставлением этих услуг. Я предоставляю Оператору право осуществлять следующие действия с моими персональными данными: сбор, систематизация, накопление, хранение, уточнение (обновление, изменение), использование, обезличивание, блокирование, уничтожение персональных данных, передача персональных данных между: - Оператором ООО «КликОН», в котором мне будут осуществляться вышеперечисленные услуги ; - Оператором АНО «Региональный Сетевой Информационный Центр», осуществляющим непосредственную регистрацию доменных имён ; Мне гарантируется конфиденциальность моих персональных при обработке их и хранении не дольше срока, предусмотренного нормативными актами. Настоящие согласие данное мной и действует бессрочно. Я оставляю за собой право отозвать своё согласие посредством составления соответствующего письменного документа, который может быть направлен мной в адрес Оператора по почте заказным письмом с уведомлением о вручении либо вручен лично под расписку уполномоченному представителю Оператора.