42588

Дослідження засобів документування програм

Лабораторная работа

Информатика, кибернетика и программирование

Документування ПЗ – це один з процесів підтримки життєвого циклу ПЗ, який полягає у фіксуванні інформації,яка створюється у межах діяльностей. Результатом процесу документування є документи (документація), які випускаються згідно з планом документування. Однією із складових процесу документування ПЗ є документування програмного коду з метою створення документів, які містять високорівневу структуровану інформацію для розробників. Документування включає створення вербальних та графічних представлень програмного коду (узагальнюючого тексту, діаграм тощо), їх структуризацію,форматування та фіксацію на носії. Ці дії можуть виконуватися із використанням автоматизованих засобів.

Украинкский

2013-10-30

366.5 KB

1 чел.

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ

ФАКУЛЬТЕТ КОМП’ЮТЕРНИХ НАУК

Лабораторна робота № 9

З дисципліни «МРПП та ВПС»

на тему: “ Дослідження засобів документування програм

Виконав: 

студент ФКН 405

Рощак I.М.

Перевірив:

викладач

Варнавський В. В.

Київ 2010

Теоретичні відомості

Документування ПЗ – це один з процесів підтримки життєвого циклу ПЗ, який полягає у фіксуванні інформації,яка створюється у межах діяльностей. Результатом процесу документування є документи (документація), які випускаються згідно з планом документування.

Однією із складових процесу документування ПЗ є документування програмного коду з метою створення документів, які містять високорівневу структуровану інформацію для розробників. Документування включає створення

вербальних та графічних представлень програмного коду (узагальнюючого тексту, діаграм тощо), їх структуризацію,форматування та фіксацію на носії. Ці дії можуть виконуватися із використанням автоматизованих засобів.

Doxygen – це утиліта генерації документації для програм, написаних на C++, C, Java, Objective-C, Python, IDL(Corba та Microsoft), деяких версій PHP, C# і D. Вихідна документація є файлами в html-форматі, у форматі LaTex(зокрема, для подальшого створення pdf-файлів), rtf, довідкового керівництва в стилі Unix-man, довідкового керівництва в стилі кросплатформенної бібліотеки Qt, xml і т.ін. Крім документування кожного окремого файлу, Doxygen формує звідні індекси по іменах функцій, змінних, визначень типів і т.ін. (рис.2.13).

Відношення між приложениями та інформаційними потоками між ними:

Інформаційні потоки Doxygenww.pdffactory.com

Виконавчий файл doxygen - головна програма, яка розбирає вихідний код і генерує документацію.

Vykonavchyy̆ fay̆l doxygen - holovna prohrama, yaka rozbyraye vykhidnyy̆ kod i heneruye dokumentatsiyu.

Виконавчий файл doxytag - необхідний, тільки якщо Ви хочете генерувати посилання на зовнішню документацію (тобто документацію, яка була згенерована doxygen) для якої у Вас немає вихідного коду. Опціонально можна використовувати виконуваний файл doxywizard, який є графічним інтерфейсом для редагування
конфігураційного файлу, який використовує doxygen і для запуску doxygen в графічному середовищі. Приклад послідовності дій із збірки документації на Doxygen:

1. Відкрити DoxygenWizard.

2. [Load…] – вибрати основний файл проекту (cpp).

3. [Expert…]

3.1. [Project]

3.1.1. Output Language → Russian

3.1.2. FULL_PATH_NAMES → Off

3.1.3. TAB_SIZE → 4

3.2. [Build]

3.2.1. EXTRACT_ALL → On

3.2.2. EXTRACT_PRIVATE → On

3.2.3. EXTRACT_STATIC → On

3.2.4. EXTRACT_LOCAL_METHODS → On

3.2.5. INTERNAL_DOCS → On

3.2.6. SHOW_DIRECTORIES → Off

3.3. [Input]

3.3.1. Видалити поточне (-), додати кожен файл для документування (cpp) через ‘Select’ → ‘+’.

3.4. [LaTeX]

3.4.1 Generate LaTeX → Off

4. [Save…] →Зберегти в директорії основного файлу проекту.

5. Start.

Деякі параметри що використовуються в Doxygen наведені нище.

EXTRACT_ALL Включення в документ усіх класів, файлів і т.д. За умовчанням в документацію потрапляють тільки спеціально віддокументовані частини коду

EXTRACT_STATIC Включення в документ статичних членів файлу

HAVE_DOT Використовується пакет візуалізації графів Graphviz для генерації діаграм

HIDE_UNDOC_RELATIONS Прибирає з класу зв’язки між документованими класами

CLASS_GRAPH В описі класу з’являється діаграма успадкування класу та список класів нащадківww.pdffactory.com

(успадковані класи) і класів предків (базові класи)

COLLABORATION_GRAPH Граф зв’язків

UML_LOOK Використовується UML стиль діаграм

GENERATE_TREEVIEW Поява вікна з деревом всіх обьектов проекту

CALL_GRAPH Граф визову функцій

INCLUDE_GRAPH

INCLUDED_BY_GRAPH

Графи включення файлів

Спеціальні коментарі, розташовані в коді програми потрапляють в документацію. Коментарі бувають короткі або

детальні. Допускається не більше одного короткого і одного детального коментаря перед кожним документованим

елементом (файл, клас, змінна, функція і т.ін.) проекту. Додатковий символ слеш – /// створює короткий коментар.

Додатковий символ зірочка – / ** створює детальний коментар.

Набір спеціальних команд дозволяють тримати коментарі в додаткових файлах.

Нижче наведений приклад з використанням команд:

- використання списків (елемент списку позначається символом -);

- коментар файла (\file) усередині і зовні файлу;

- команда автор (\author);

- команда дата (\date);

- команда зауваження (\note);

- команда короткого коментаря (\brief);

- команда нового параграфа (\par);

–––File:./csharp/main.txt

/**

\file main.cs

\brief головний файл застосування

дуже докладний опис файлу main.cs

\author Іван Іванов

\date 2009

\note

це застосування було розроблено для показу

\par

Ціль проекту полягає в демонстрації можливостей Doxygen;

*/

–––End Of File:./csharp/main.txt

Завдання: 

1. Вивчити основні можливості засобу Doxygen та методику створення у програмах спеціальних блоків документування.

2. Отримати у викладача тестові програми, вивчити їх та створити в них спеціальні блоки документування для декількох функцій (не менш трьох).

3. Вивчити та використати формули в LaTeX.

4. Створити документацію програм за допомогою Doxygen у форматах .html та .rtf.

5. Підготувати звіт з лабораторної роботи, у якому відобразити частини коду зі спеціальними блоками документування та відповідні частини створеного документу.

Виконання:

  1.  Створення спеціальних блоків документування програм.
  2.  Програма № 1 . Демонструє роботу з однозв’язним лінійним списком.

Код програми написано на мові С++ має наступний вигляд:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

/* First node of the list is not used to store actual values*/

/* Last node has "next" pointer equal to zero */

typedef struct _node {

       int value;

       struct _node * next;

}Node,List;

/*Sets the end of list to it's start*/

void CreateList(List * list) {

       list->next=NULL;

};

void AddNode(List * list,int value) {

       Node * node;

       //if the end of list is found

       if(list->next==NULL) {

               //insert to the end

               list->next = (Node*) malloc(sizeof( List));

               list->next->value=value;

               list->next->next=NULL;

               return;         

       };//end of looking up

 

       //if the right place is found

       if(list->next->value >= value)  {

               //insert there

               node = (Node*)malloc(sizeof( List));

               node->value = value;

               node->next = list->next;

               list->next = node;      

       } else //keep searching - call the same for next node.

               AddNode(list->next,value);

};

int DelNode(List * list,int value) {

       Node * tmp;

       //if this is the end - quit.notging deleted.

       if(list->next==NULL) return 0;

       if(list->next->value==value) {

               //deleted something.return true.

               tmp = list->next->next;

               free(list->next);

               list->next = tmp;

               return 1;//else keep searching

       } else return DelNode(list->next,value);

};

void PrintList(List * list) { //thats just simple.

       Node * tmp;

       if(list->next == NULL)  {

               printf("List is empty");

               return;

       }

       tmp = list->next;

       while(tmp !=NULL) {

               printf("%d ",tmp->value);

               tmp=tmp->next;

       };

};

int CntList(List * list) { //even more simple

       int i = 0 ;

       Node * tmp = list;

       while(tmp->next != NULL) {

               i++;

               tmp=tmp->next;

       };

       return i;

};

int OccList(List * list,int value ) {

       if(list->next == NULL) return 0;

       if(list->next->value == value)

               return 1+OccList(list->next,value);

       if(list->next->value >value )

               return 0;

       return OccList(list->next,value);

};

int CdvList(List * list) {

       if(list->next == NULL)

               return 0;

       if(list->next->next ==NULL)

               return 1;

       if(list->next->value == list->next->next->value)

               return CdvList(list->next);

       else

               return 1+CdvList(list->next);

};

int RanList(List * list,int value1, int value2) {

       if(value1 >value2){

               printf("Invalid range\n");

                       return -1;

       }

       if(list->next==NULL)

               return 0;

       if(list->next->value > value2 )

               return 0;

       if(list->next->value < value1 )

               return RanList(list->next,value1,value2);

       return RanList(list->next,value1,value2)+1;

};

int main () {

       char command[4];

       int param1,param2,tmp;

       List list;

       CreateList(&list);

       while(1) {

               printf("Enter command : ");

               scanf("%s",command);

               if(!strcmp(command,"pri") ) {

                       PrintList(&list);

                       printf("\n");

               };

               if(!strcmp(command,"ins") ) {

                       scanf("%d",&param1);

                       AddNode(&list,param1);

               };

               if(!strcmp(command,"del") ) {

                       scanf("%d",&param1);

                       if(!DelNode(&list,param1))

                               printf("There is no given value in the list\n");

               };

               if(!strcmp(command,"cnt") ) {

                       printf("Number of nodes : %d\n",CntList(&list));

               };

               if(!strcmp(command,"cdv") ) {

                       printf("Number of unique nodes: %d\n",CdvList(&list));

               };

               if(!strcmp(command,"occ") ) {

                       scanf("%d",&param1);

                       printf("There are %d entries of %d in list\n",OccList(&list,param1),param1);

               };

               if(!strcmp(command,"ran") ) {

                       scanf("%d %d",&param1,&param2);

                       if( (tmp = RanList(&list,param1,param2))>=0)

                               printf("Number of nodes within selected range is %d\n",tmp);

               };

               if(!strcmp(command,"end") )  

                       break;

       };

       return 0;

};

Приклад документування програми:

  1.  Програма № 2 . Вивід повідомлення Hello World !!!

Код програми написано на мові С# має наступний вигляд:

public class ExampleClass

{

 public static void Main()

 {

   System.Console.WriteLine("Hello, world!");

 }

}

Приклад документування програми:

PAGE   \* MERGEFORMAT 1


 

А также другие работы, которые могут Вас заинтересовать

13861. Анализ фильма «Конформист» 46 KB
  Ромазанов Д.М. Политология 4 курс. Анализ фильма Конформист Фильм Конформист режиссера Бернардо Бертолуччи снят в 1970 году по роману Альберто Моравиа. Главный герой Марчелло Клеричи интеллектуал о чем можно судить из его диалого
13862. Мультфильм «Персеполис» 41 KB
  абиров Д.Р. Задание по курсу Политическая этика Мультфильм Персеполис Персеполис французский полнометражный анимационный фильм режиссёра Маржана Сатрапии французской писательницы иранского происхождения. Сюжет в кратце: Бойкая Марьян восьми л
13863. Анализ фильма «Молитвы за Бобби» с точки зрения этики и морали 27.34 KB
  Анализ фильма Молитвы за Бобби с точки зрения этики и морали. Место действия. Действия фильма разворачивается в небольшом городе Walnut Creek в Соединенных Штатах Америки штат Калифорния 60 тысяч населения. Город представляет собой американскую мечту с красивыми уло...
13864. Эссе по политической этике на тему «Мораль в произведении Уильяма Голдинга «Повелитель мух» 28.98 KB
  Эссе по политической этике на тему Мораль в произведении Уильяма Голдинга Повелитель мух Имя Уильяма Голдинга отчего то не столь популярно в мире. Подразумеваю что редко можно встретить его в одном ряду например с Хемингуэем Маркесом Ремарком Фицджеральдом
13865. Приговор Pussy Riot 46.5 KB
  Фирсова В.А. Политология 4 курс Приговор Pussy Riot. В начале работы хотелось бы сказать несколько слов о Pussy Riot. Панк рок группа была создана в 2011 году и за сравнительно небольшое время своего существования успела воплотить в жизнь огромное количество акц
13866. Книга Гарриет Бичер-Стоу «Хижина дяди Тома» 22.17 KB
  Халаим Дина Книга Гарриет БичерСтоу Хижина дяди Тома попытка показать институт рабовладения в США жизнь невольников и других людей отношение к этой ситуации совершенно с иной стороны и донести до общества того времени идею что невольники это такие ж
13867. Анализ видео-материалов, посвященных митингам протеста в контексте выборной кампании 2011-12 гг. 68.5 KB
  ернядьевой Екатерины Анализ видеоматериалов посвященных митингам протеста в контексте выборной кампании 201112 гг. 2011 2012 года в отличие от ряда предыдущих лет начала века характеризуется небывалой активностью выступлений на улицах и площадях. Эти выст...
13868. Анализ художественного фильма «Мечтатели» режиссера Б.Бертолуччи 47 KB
  Анализ художественного фильма Мечтатели режиссера Б.Бертолуччи. Фильм Б.Бертолуччи неизменного классика интеллектуального европейского кино был снят в 2003 году по одноименной книге Гилберта Адэра. Режиссер находясь под впечатлением от событий 1968 года снимает сра
13869. Кен Кизи «Полет над гнездом кукушки» 49.5 KB
  Ябуровой Натальи Политология 4 курс Эссе Кен Кизи Полет над гнездом кукушки Книга повествует о психбольнице в которой заправляет бывшая военная медсестра мисс Гнусен. Военные сестры пытаются устроить военный госпиталь. Они сами немного больные1. Так