
- •Оглавление
- •2. Реализация
- •3. Обслуживание
- •1.1.1. Усовершенствование каскадной модели
- •1.1.2. Определение фаз жизненного цикла
- •Основные работы над проектом
- •1.2. Виды программных документов
- •1.3.Требования к программным документам, содержащим в основном сплошной текст по гост 19.106-78
- •1.3.1. Текст документа по гост 19.106-78
- •1.4. Правила оформления исходного текста программ
- •1.4.1. Методы повышения информативности программ
- •1.4.2. Количество операторов в строке
- •1.4.3. Отступы
- •1.4.4. Основные правила использования отступов таковы.
- •1.4.5. Операторные скобки
- •1.4.6. Пробелы
- •1.4.7. Пустые строки
- •1.4.8. Имена
- •1.4.9. Комментарии
- •1.5. Методы тестирования по
- •1.5.1. Аксиомы тестирования
- •1.5.2. Уровни тестирования
- •1.5.3. Статическое и динамическое тестирование
- •1.6.3. Состав
- •2. Практическая часть
- •2.1.Требования, предъявляемые к программе
- •2.2. Цели, достигаемые в процессе создания программы
- •2.3. Внешние спецификации
- •2.3.1. Интерфейс приложения и интерфейсные спецификации
- •2.3.2. Спецификации входных и выходных данных
- •2.4. Сценарий работы программы
- •2.5. Алгоритм программы
- •2.6. Тестовые наборы
- •Литература
1.4.6. Пробелы
Особенность зрительного восприятия человека такова, что пробелы распознаются лучше других знаков синтаксиса. Поэтому отдельные элементы текста необходимо отделять пробелами, несмотря на то, что первые, возможно, уже отделены другими знаками препинания (скобки, запятые, точки с запятой и т.д.). В особенности важно отделять стоящие рядом операторы и списки аргументов функций.
Дополнительные пробелы могут быть также использованы для выравнивания сходных по смыслу или однотипных частей выражений с целью улучшения наглядности, например, при объявлении переменных и для серии присваиваний:
int a, size;
char *buf;
float lenght1, lenght2;
. . .
a = 1;
lenght1 = GetLength();
lenght2 = 0;
size = (int) lenght1;
Практику правильного использования пробелов можно также изучить по всем остальным примерам данного подраздела.
1.4.7. Пустые строки
Использование пустых строк является важным средством для выделения участков программы. При этом имеет смысл отделять:
1) определения переменных:
char str[80];
int counter = 0;
fgets( str, 79, infile);
counter++;
2) последовательности однотипных инструкций или директив:
#include
#include
#include
#define NAME_SIZE 256
#define MAX_LEN 3000
3) функции:
int main()
{
. . .
}
char *get_name(FILE *f)
{
. . .
}
4) любые логически завершенные блоки кода:
printf( "Enter size and delta: " ); //Блок ввода данных
scanf( "%d", &size );
scanf( "%f", &delta );
for( i=0; i < size; i++ ) //Блок использования данных
{ a[i] -= delta;
b[i] += delta;
}
1.4.8. Имена
Типичной ошибкой начинающих является стремление давать всем переменным неосмысленные однобуквенные имена, например m, n, a, s, p и т.п. Это глубоко порочная практика, поскольку при этом теряется сам смысл понятия имя. Однобуквенные имена принято давать только индексам. Исключением являются случаи, когда количество переменных в процедуре
#define NAME_SIZE 256
#define MAX_LEN 3000
3) функции:
int main()
{
. . .
}
char *get_name(FILE *f)
{
. . .
}
4) любые логически завершенные блоки кода:
printf( "Enter size and delta: " ); //Блок ввода данных
scanf( "%d", &size );
scanf( "%f", &delta );
for( i=0; i < size; i++ ) //Блок использования данных
{ a[i] -= delta;
b[i] += delta;
}
1.4.9. Комментарии
Время, потраченное на написание комментариев, многократно окупится при любых модификациях программы. Однако комментировать все подряд, включая самоочевидные действия, как в следующем примере, тоже не стоит:
size = 10; // Присвоить size значение 10
for( i=0; i < size; i++) // Цикл по i от 0 до size
{ . . .
}
Такого рода комментарии только загромождают программу.
Комментировать следует:
заголовок файла, описывая содержимое данного файла;
заголовок функции, поясняя назначение ее аргументов и смысл самой функции;
вводимые переменные и структуры данных;
основные этапы и особенности реализуемых алгоритмов;
любые места, которые трудны для быстрого понимания, в особенности использование различных программных "трюков" и нестандартных приемов;
1.5. Методы тестирования по
Тестирование программ — процесс исследования, испытания программного обеспечения (ПО) с целью получения информации о качестве продукта.
Программы в процессе тестирования используются в двух принципиально различных формах представления:
в виде текста на языке программирования или описания спецификаций требований (символьное представление), удобном для анализа человеком и обычно недоступном для непосредственного получения результатов функционирования на ЭВМ;
в машинном коде конкретной ЭВМ (объектное представление), пригодном для автоматической обработки определенных кодовых исходных данных и неудобном для анализа человеком.
Конечной целью тестирования является получение корректной и надежной программы, функционирующей в машинном коде на ЭВМ. Корректность программы в символьном представлении способствует повышению корректности программ в объектном представлении, и наоборот. Кроме того, процесс тестирования в символьном представлении во многих случаях экономичнее, чем в машинном коде. Вследствие этого созданы и применяются две группы методов тестирования:
статические — использующие только исходные тексты программ, преимущественно на языках высокого уровня без исполнения той же программы в машинном коде на ЭВМ;
динамические — при которых тестируемая программа исполняется на ЭВМ в соответствующем машинном коде, а тексты на языке программирования используются как вспомогательные.