
- •Тема 1. Основные этапы решения задач на эвм 5
- •Тема 2. Жизненный цикл программы. Критерии качества программы. 15
- •Тема 3. Схемы алгоритмов, данных, программ 29
- •Тема 1. Основные этапы решения задач на эвм Постановка задачи разработки программного обеспечения
- •Анализ формальной постановки задачи
- •Выбор или разработка математической модели и метода решения
- •Разработка алгоритма
- •Базовые структуры алгоритма
- •3.2. Цикл с постусловием.
- •Тема 2. Жизненный цикл программы. Критерии качества программы.
- •Техническое задание и спецификация программы
- •Разработка проекта программной системы
- •Программирование (кодирование) или программная реализация алгоритмов
- •Тестирование и отладка
- •Эксплуатация и сопровождение
- •Критерии качества программного обеспечения
- •Тема 3. Схемы алгоритмов, данных, программ
- •Символы данных
- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.Д.).
- •Символы процесса
- •Символы линий
- •Специальные символы
- •Правила применения символов в схемах
- •Правила выполнения соединений
- •Специальные условные обозначения
- •Тема 4. Язык программирования высокого уровня Си Общие сведения о языке Си
- •Алфавит языка Си
- •Грамматика для описания языка, синтаксические диаграммы
- •Структура программы на языке Си
- •Void main() //функция main
- •Имена объектов в программе
- •Выражения, операции и приоритеты
- •Тема 5. Стандартные типы данных
- •Тема 6. Составные типы данных Данные регулярного типа (массивы)
- •Int b [n]; // вектор из 10 целых элементов
- •9 Strcpy(s1,&s2[k]); //копирует правую подстроку из s2 в s1
- •9 Strncpy(s1,&s[2],n); //копирует среднюю подстроку из s2 в s1
- •Void main() /*пример функции*/
- •If(strcmp(s, "пароль"))
- •If(!strсmp("quit", s)) break;
- •Данные комбинированного типа (структуры)
- •Int month;
- •Int year;
- •Перечисления
- •Объединения
- •Указатели
- •Void *addres;
- •Int arrey[25];
- •Тема 7. Представление основных управляющих структур программирования Оператор присваивания
- •Составной оператор
- •Оператор перехода Goto
- •Условный оператор If
- •Оператор выбора switch
- •Операторы цикла while, do – while, for
- •Int I,j,imax,jmax,imin,jmin;
- •Операторы прерывания циклов
- •If (!flag) printf("Отрицательных чисел нет"); Форматированный ввод данных
- •Форматированный вывод данных
- •Преобразование типов
- •Инициализация данных
- •Тема 8. Функции
- •Определение функций в языке Си
- •Int rus (unsigned char r)
- •Void change (int X, int y)
- •Void change (int *X, int *y)
- •Вызов функций в языке Си
- •Int *fun (intx,int *y);
- •Int main()
- •Рекурсивные функции
- •Int nodWhile (int m, int n)
- •Int nodWhile (int m, int n)
- •Int main()
- •Int fCalculated[nFib];
- •Int FibDinam (int n)
- •Int main()
- •Int Summa(int n, int a[100])
- •Int main()
- •Тема 9. Файлы
- •Int fseek(file *fp, long count, int access);
- •Int ferror(file *fp);
- •Int remove(char *file_name);
- •Void rewind(file *fp);
- •Int main()
- •Тема 10. Приемы программирования. Примеры алгоритмов Алгоритмы сортировки
- •Исходный массив
- •Void SortBubble (int count, int* pArr)
- •Исходный массив
- •Void SortSelect(int count, int* pArr)
- •Int i1,temp;
- •Int jmax;
- •Void SortInsert (int count, int* pArr)
- •Int temp, j;
- •Алгоритмы поиска
- •Int bfSearch(char *s, char *p)
- •Int bmtarr[255];
- •Int bmSearch(int startpos, char *s, char *p)
- •Int BinarySearch (int lb, int ub, int key, int* pArr)
- •Динамические структуры данных
- •Линейные списки
- •Int value; // значение элемента
- •Void PrintSearchList (list head, int val)
- •If (lfound) printf("Элемент в списке найден!");
- •Стек, очередь, дек
- •Int prior(char);
- •Void main(void)
- •Int k, point;
- •Int prior(char a)
- •Деревья
- •Int info; //информационное поле
- •Приложение 1. Стандартные библиотеки языка Си
- •Приложение 2. Примеры реализации алгоритмов
- •Int main()
- •Int arr[10]; // Массив arr из 10 целочисленных элементов
- •Int I; // Счетчик для циклов
- •Int main()
- •Int main()
- •Int main()
- •Int Temp;
- •Int CurrentYear, Diff, Day1, Day2, Month1, Month2, I, Visokos;
- •Int main()
- •InsertSort(d, max); // Сортируем массив b методом вставок
- •Int number;
- •Int main()
- •Не рекурсивный алгоритм решения задачи Ханойская башня.
- •Int main()
- •Рекурсивный алгоритм решения задачи Ханойская башня.
- •Void move(int I, int j, int d)
- •Void hanoy(int I, int j, int k, int d)
- •Int main()
- •Int Cubic(double *X,double a,double b,double c);
- •Int Cubic (double *X, double a, double b, double c)
- •Void lu_backsub (double **a, int n, int *indx, double *b)
- •Void lu_invert (double **a, int n, int *indx, double **inv, double *col)
- •Int BracketRoot (double x0, double *a, double *b, double d0, double di, double dmax, double (*fun)(double));
- •Int BracketRoot (double x0, double *a, double *b, double d0,
- •Int main()
- •Int expo, I;
- •If (expo & 1)
- •Int main()
- •Приложение 3. Лабораторные работы Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораторная работа №12
- •Список литературы
Эксплуатация и сопровождение
При эксплуатации могут возникать следующие ситуации, требующие модификации системы:
-
обнаруживаться ошибки;
-
обнаруживаться неэффективные алгоритмы;
-
потребоваться уточнение отдельных функций и данных;
-
потребоваться введение дополнительных функций.
Все это обуславливает выпуск новых версий системы.
Критерии качества программного обеспечения
Модель качества программного обеспечения (ПО) описана в стандарте ИСО/МЭК 9126-1:1998 «Характеристики и метрики качества программного обеспечения» и категоризирует атрибуты качества ПО по шести характеристикам: функциональные возможности, надежность, практичность, эффективность, сопровождаемость и мобильность (рис.9).
Рис.9. Основные
характеристики качества программного
обеспечения
Рассмотрим эти категории и их составляющие более подробно.
Функциональные возможности (Functionality)
Представляют собой способность ПО обеспечивать функции, удовлетворяющие установленным и подразумеваемым потребностям при использовании ПО в заданных условиях.
Пригодность (Suitability) – способность ПО обеспечивать соответствующий набор функций для указанных задач и целей пользователя.
Правильность (Accuracy) – способность ПО обеспечивать правильные или приемлемые результаты или эффекты.
Способность к взаимодействию (Interoperability) – способность ПО взаимодействовать с одной или большим числом указанных систем. Способность к взаимодействию используется вместо совместимости, чтобы избежать возможной путаницы с заменяемостью.
Защищенность (Security) – способность ПО защищать информацию и данные так, чтобы не уполномоченные субъекты или системы не могли читать или изменять их, а уполномоченные субъекты или системы не получали отказа на доступ к ним.
Согласованность (Compliance) – способность ПО придерживаться стандартов, соглашений или норм из законов и подобных предписаний, связанных с областью применения.
Надежность (Reliability)
Это способность ПО сохранять свой уровень качества функционирования при использовании в указанных условиях. Ограничения в надежности являются следствием ошибок в требованиях, проекте и реализации. Отказы из-за этих дефектов в большей степени зависят от способа использования ПО и выбранных режимов работы программы, чем от времени ее выполнения.
Завершенность (Maturity) – способность ПО предотвращать отказ как следствие ошибок в ПО.
Устойчивость к ошибке (Fault tolerance) – способность ПО поддерживать заданный уровень качества функционирования в случаях ошибок в ПО или нарушения установленного интерфейса.
Восстанавливаемость (Recoverability) – способность ПО в случае отказа восстанавливать уровень качества функционирования и поврежденные данные. После отказа, ПО иногда бывает неработоспособно в течение некоторого периода времени, длина которого оценивается его восстанавливаемостью.
Доступность (Availability) – способность ПО быть в состоянии выполнять требуемую функцию в данный момент времени при установленных условиях использования. Внешне, доступность может оцениваться временем, в течение которого ПО находится в работоспособном состоянии, в пропорции от общего времени. Следовательно, доступность – комбинация завершенности (от которой зависит частота отказа) устойчивость к ошибке и восстанавливаемости (которые обусловливают длительность простоя после каждого отказа).
Согласованность (Compliance) – способность ПО придерживаться стандартов, соглашений или норм из законов и подобных предписаний, связанных с надежностью.
Практичность (Usability)
Это способность ПО, обусловливающая легкость его понимания, изучения и использования, а также привлекательность для пользователя при использовании в указанных условиях.
Понятность (Understandability) – способность ПО, обеспечивающая пользователю понимание, является ли ПО пригодным, и как его можно использовать для конкретных задач и условий использования. Понятность зависит от документации и первичных впечатлений от ПО.
Изучаемость (Learnability) – способность ПО, обеспечивающая изучение пользователем его применения.
Легкость использования (Operability) – способность ПО, обеспечивающая пользователю возможность его эксплуатировать и управлять им. Аспекты изменяемости, адаптируемости и легкости установки могут быть предпосылками для легкости использования. Легкость использования соответствует управляемости, устойчивости к ошибке и согласованности с ожиданиями пользователя. Для системы, которая эксплуатируется пользователем, комбинация функциональных возможностей, надежности, практичности и эффективности можно измерить внешне через качество в использовании.
Привлекательность (Attractiveness) – способность ПО нравиться пользователю. Привлекательность связана с атрибутами ПО, обусловливающими большую привлекательность ПО для пользователя.
Согласованность (Compliance) – способность ПО придерживаться стандартов, соглашений, руководств по стилю или нормам, связанных с практичностью.
Эффективность (Efficiency)
Это способность ПО обеспечивать требуемую производительность относительно количества используемых ресурсов в установленных условиях. Ресурсы могут включать другие программные продукты, аппаратные средства, материалы (например, бумага для распечатки, дискеты). Для системы, которая эксплуатируется пользователем, комбинация функциональных возможностей, надежности, легкости использования и эффективности можно измерить внешне через качество в использовании.
Временная эффективность (Time behaviour) – способность ПО обеспечивать приемлемые времена отклика и обработки, а также пропускную способность при выполнении его функций в установленных условиях.
Использование ресурсов (Resource utilization) – способность ПО использовать приемлемые ресурсы в течение приемлемого времени при выполнении его функций в установленных условиях.
Согласованность (Compliance) – способность ПО придерживаться стандартов или соглашений, связанных с эффективностью.
Сопровождаемость (Maintainability)
Это способность ПО к модификации. Изменения могут включать исправления, усовершенствования или адаптацию ПО к изменениям в среде, а также в требованиях и функциональных спецификациях.
Анализируемость (Analyzability) – способность ПО к диагностике его недостатков или причин отказов в ПО, а также к идентификации его частей для модификации.
Изменяемость (Changeability) – способность ПО к обеспечению реализации специфицированных изменений. Реализация включает кодирование, проектирование и документирование изменений. Если ПО должен модифицировать конечный пользователь, изменяемость может быть предпосылкой для легкости использования.
Стабильность (Stability) – способность ПО минимизировать непредвиденные эффекты от его изменений.
Тестируемость (Testability) – способность ПО, обеспечивающая проверку и приемку модифицированного ПО.
Согласованность (Compliance) – способность ПО придерживаться стандартов или соглашений, связанных с сопровождаемостью.
Мобильность (Portability)
Это способность ПО к переносу из одной среды в другую. Среда может включать организационную, аппаратную или программную среду.
Адаптируемость (Adaptability) – способность ПО к модификации для различных указанных сред без применения других действий или средств, чем те, что предназначены для этой цели для рассматриваемого ПО. Адаптируемость включает масштабируемость внутренних возможностей (например, экранных полей, размеров таблиц, объемов транзакций, форматов отчетов и т.д.). Если ПО должно адаптироваться конечным пользователем, адаптируемость соответствует пригодности для индивидуализации и может быть предпосылкой для легкости использования.
Легкость установки (Installability) – способность ПО к установке в указанной среде. Если ПО должно устанавливаться конечным пользователем, легкость установки будет предпосылкой для легкости использования.
Сосуществование (Co-existence) – способность ПО сосуществовать с другим независимым ПО в общей среде, разделяя общие ресурсы.
Заменяемость (Replaceability) – способность ПО к использованию вместо другого указанного ПО в среде заменяемого ПО. Заменяемость используется вместо совместимости, чтобы избежать возможной путаницы со способностью к взаимодействию. Заменяемость не предполагает, что заменяемое ПО способно заменить рассматриваемое ПО. Заменяемость может включать атрибуты как легкости установки, так и адаптируемости.
Согласованность (Compliance) – способность ПО придерживаться стандартов или соглашений, связанных с мобильностью.
Кроме указанных характеристик при оценке качества ПО следует учитывать качество в использовании (Quality in use) – степень, в которой продукт, используемый указанными пользователями, удовлетворяет их потребности в достижении определенных целей с результативностью, продуктивностью и удовлетворением в заданном контексте использования. Это представление пользователя о качестве системы, содержащей ПО, и измеряется скорее в терминах результата использования ПО, чем собственных свойств ПО. Качество в использовании определяется следующими параметрами: результативность (Effectiveness) – точность и полнота достижения определенных целей пользователями; продуктивность (Productivity) – соотношение израсходованных ресурсов и результативности; удовлетворение (Satisfaction) – отношение пользователей к использованию продукта.