Парадигмы программирования
От: LIS  
Дата: 06.07.05 12:12
Оценка: 2 (1)
Привет!

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

1. Метрики, применимые при различных подходах проектирования ПО.

Выделим 4 современных парадигмы программирования для императивных ЯП:

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

Для статического анализа исходного кода можно применять метрики:
— Объем программы: LOC-оценки, метрики Холстеда
— Потока управления программы: метрики Маккейба, Майерса, Джилба, «Подсчет точек пересечения», метод граничных значений.
— Потока данных: метрики Чепина, Спена, Овьедо, метрика «модуль-глобальная переменная»

2. Объектно-ориентированное программирование (ООП)
ООП предполагает группировку процесса обработки данных и самих обрабатываемых данных в единый объект по некоторым признакам общности.
2.1. Поток управления: состоит из двух частей — неопределенная последовательность взаимодействий объектов и определенная последовательность вызвов методов внутри объекта.
2.2. Поток данных: состоит из двух частей: данные, передаваемые между объектами, и данные, инкапсулированные внутри объектов. Обработка данных производится только внутри объектов, которым они принадлежат.
2.3. Взаимодействие с внешней средой осуществляется через описание интерфейса объекта и только через него. Интерфейс объекта – это список доступных методов объекта с описанием их сигнатуры и список типов данных, которые можно получить от объекта.
2.4. Метаданные: необязательны, применяются для задания дополнительных аттрибутов как объектам в целом, так и их методам и данным.

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

3. Компонентно-ориентированое программирование (КОП)
КОП предполагает объединение ПП-процедур или ООП-объектов в компоненты по принципу функциональной общности и целостности. В отличие от ООП-объектов компонент должен быть независимым от внешней среды в рамках, определяющих его функциональное назначение.
3.1. Поток управления: также состоит из двух частей – взаимодействие ПП-процедур или ООП-объектов внутри компонента и взаимодействие между компонентами в системе. При оценке ПУ для КОП ПС можно применять те же методы, что и для ПП и ООП с учетом свойства «независимости» компонентов друг от друга.
3.2. Поток данных: также можно разделить на два субпотока – данные, поступающие из/во внешний мир и данные, циркулирующие внутри компонента. Аналогично анализу потока управления можно использовать методы ПП или ООП анализа.
3.3. Взаимодействие с внешней средой: осуществляется, как и в ООП, через объявление интерфейса компонента. Но если интерфейс ООП-объекта просто предоставляет «наружу» список возможностей объекта, интерфейс компонента также предъявляет определенные требования к взамодействующим с ним компонентам.
3.4. Метаданные: наличие обязательно, т.к. они являются основным инструментом определения интерфейса компонента.

Структура анализа КОП программ аналогична ООП, для анализа можно использовать модифицированные методы ООП.

4. Аспектно-ориентированое программирование (АОП) (?)
АОП является, по сути, расширением возможностей ООП парадигмы за счет непосредственного внедрения метаданных в ЯП. В АОП дополнительно вводится обобщение объектов, методов и данных объектов на основе их принадлежности к некоторым общим группам по признакам т.н. «сквозной» функциональности. В целом, можно сказать, что такие группы являются отдельными объектами, но в то же время являются частями всех объектов в группе.
4.1. Поток управления: анализ ПУ аналогичен анализу в ООП, но с учетом того, что подпотоки групп являются одинаковыми для всех объектов, принадлежащих некоторой группе и по сути являются отдельными (?) потоками.
4.2. Поток данных: содержит в себе подпотоки данных, являющихся общими для всех объектов групп, но в тоже время каждый из этих подпотоков индивидуален для каждого объекта.
4.3. Взаимодействие с внешней средой: полностью аналогично ООП.
4.4. Метаданные: обязательны, являются частью ЯП.

Структура анализа АОП программ аналогична ООП, для анализа можно использовать модифицированные методы ООП.

Заранее ОГРОМНОЕ спасибо за конструктивную критику
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.