Как разобрать программу?

3 ноября 2014 г. Просмотров: 814
В процессе профессиональной деятельности программисту приходится сталкиваться с множеством ситуаций, требующих комплексного анализа больших фрагментов исходного кода или же даже целых приложений. Исследование удачных решений и практик, анализ уже реализованных алгоритмов или же просто перевод в команду другого проекта часто вызывает необходимость разобрать программу, написанную кем-то еще.

Вам понадобится

  • - программа для просмотра исходного кода;
  • - возможно, средства реверс-инженерии и case-средства.

Инструкция

  • Исследуйте потоки передачи управления разбираемой программы. Выявите точку входа. Ей, например, является функция main в C и C++, начало неименованного структурного блока первого уровня, завершающегося ключевым словом END с точкой, в pascal.Начиная от точки входа, проследите все маршруты вызовов функций, процедур, методов классов. Составьте укрупненную диаграмму потоков управления. Для упрощения данного процесса можно использовать различные средства реверс-инженеринга.Более подробно проанализируйте исходный код структурных элементов разбираемой программы. Составьте диаграммы потоков управления или блок-схемы алгоритмов, реализуемых отдельными функциями и методами.
  • Осуществите анализ потоков данных разбираемой программы. Выявите структуры, используемые для хранения информации и ее передачи между функциональными элементами приложения. Выявите фрагменты кода, в которых осуществляется преобразование данных из одной формы в другую. Составьте перечень мест программы, в которых производится получение информации из внешней среды, а также ее вывод куда-либо. При проведении анализа подобного рода также помогут средства реинжиринга и case-средства (например, для построения диаграммы наследования и диаграммы зависимостей).
  • Разберите программу, составив полное представление о принципах ее функционирования. На основе знаний о потоках передачи управления между структурными элементами, а также внутри них, знаний о потоках и типах преобразований данных, выявите основные алгоритмы работы.Разделите алгоритмы обработки данных и управления интерфейсом. Среди алгоритмов обработки выделите типовые, классифицируйте их. Выявите алгоритмы, основанные на взаимодействии различных компонентов (например, поиск может использоваться как самостоятельно, так и в составе сортировки). При необходимости составьте блок-схемы различной степени детализации, иллюстрирующие работу программы.
  • Оцените статью!