- - програма для перегляду вихідного коду;
- - можливо, кошти реверс-інженерії та case-засоби.
Як розібрати програму
Прочитавши: 3999
У процесі професійної діяльності програмісту доводиться стикатися з безліччю ситуацій, що вимагають комплексного аналізу великих фрагментів вихідного коду або ж навіть цілих додатків. Дослідження вдалих рішень і практик, аналіз вже реалізованих алгоритмів або ж просто переклад в команду іншого проекту часто викликає необхідність розібрати програму, написану кимось ще.
Вам знадобиться
Інструкція
Досліджуйте потоки передачі управління розглядуваної програми. Виявити точку входу. Їй, наприклад, є функція main в C і C ++, початок неіменованого структурного блоку першого рівня, що завершується ключовим словом END з крапкою, в pascal.Начіная від точки входу, простежте всі маршрути викликів функцій, процедур, методів класів. Складіть укрупнену діаграму потоків управління. Для спрощення цього процесу можна використовувати різні засоби реверс-інженерінга.Более детально проаналізуйте вихідний код структурних елементів розглядуваної програми. Складіть діаграми потоків управління або блок-схеми алгоритмів, реалізованих окремими функціями і методами.
Здійсніть аналіз потоків даних розглядуваної програми. Виявити структури, використовувані для зберігання інформації та її передачі між функціональними елементами програми. Виявити фрагменти коду, в яких здійснюється перетворення даних з однієї форми в іншу. Складіть перелік місць програми, в яких відбувається отримання інформації із зовнішнього середовища, а також її висновок куди-небудь. При проведенні аналізу подібного роду також допоможуть засоби реінжиринг і case-засоби (наприклад, для побудови діаграми успадкування та діаграми залежностей).
Розберіть програму, склавши повне уявлення про принципи її функціонування. На основі знань про потоки передачі управління між структурними елементами, а також всередині них, знань про потоки і типах перетворень даних, виявите основні алгоритми работи.Разделіте алгоритми обробки даних і управління інтерфейсом. Серед алгоритмів обробки виділіть типові, классифицируйте їх. Виявити алгоритми, засновані на взаємодії різних компонентів (наприклад, пошук може використовуватися як самостійно, так і в складі сортування). При необхідності складіть блок-схеми різного ступеня деталізації, що ілюструють роботу програми.