Rational Rose для разработчиков и ради разработчиков


Часть 1 - часть 4


Почему структуры? Данный тип данных все еще широко используется программистами на языке С, сбрасывать со счетов, который несколько преждевременно!

Итак проект для реверсинжениринга представляет собой только заголовочный файл с объявлением следующей структуры:

//It's main structure struct struct_main{ char *string; //Structure's pointer int buffer[100]; //Temporary buffer char name[10]={"Massiv"};//Name of data int a; //Integer int b; //Integer };

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

После проведения всех стандартных манипуляций по созданию проекта и его анализу получается вот такая модель в розе (рис 2):

Рис. 2

Рис. 3

Рис.4

Рисунки 2, 3 и 4 показывают отдельные спецификации.

2 - модель структуры, полученной в результате обратного проектирования

3 - список атрибутов класса/структуры. Здесь перечислены все переменные структуры.

4 - генеральная информация о структуре. Как видно из рисунка, комментарий без каких бы то ни было ограничений перешел в разряд документации, что позволит использовать его на дальнейшем этапе дополнения атрибутов, документирования и создания отчетов

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

И еще... в качестве частного случая рассмотрим объявление подструктуры в соответствии с нижеприведенным листингом:

//It's main structure struct struct_main{ char *string; //Structure's pointer int buffer[100]; //Temporary buffer char name[10]={"Massiv"};//Name of data int a; //Integer int b; //Integer struct struct_in{ int m,st; }; };




- Начало -  - Назад -  - Вперед -



Книжный магазин