Файл: Основы алгоритмизации и программирования (Особенности описания операторов управления в различных языках программирования:достоинства и недостатки).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 1970

Скачиваний: 30

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

Тема 1. Основные структуры алгоритмов: сравнительный анализ и примеры их использования.

1.1. Понятие алгоритма

1.2. Цели и задачи теории алгоритмов

1.3. Различные подходы к понятию "Алгоритм"

Тема 2. Особенности описания операторов управления в различных языках программирования:достоинства и недостатки.

2.1. Язык программирования

2.2. Язык программирования QBASIC

Тема 3. Основные правила работы с функциями: примеры и ограничения использования функций в различных языках программирования.

3.1. Структура программы на языке С++

3.2. Описание функции

3.3. Правила работы с функциями

Тема 4. Особенности и примеры использования массивов при разработке программ.

4.1. Массивы

4.2. Описание массива в Паскале

4.3. Ввод массива

4.4. Вывод массива

Тема 5. Классификация языков программирования. Критерии выбора среды и языка разработки программ.

5.1. Классификация языков программирования

5.2. Процедурные языки

5.3. Интерпретация и компиляция.

Тема 6. История и развитие методологии объектно-ориентированного программирования. Сферы применения.

6.1. Объектно-ориентированный язык

6.2. Серверные языки

6.3. Языки программирования.

6.4. Методологии программирования

Тема 7. Отладка и тестирование программ: основные подходы и ограничения.

7.1. Отладка

7.2. Тестирование программ

Тема 8. Методы сортировки данных: эволюция и сравнительный анализ. Примеры использования.

8.1. Алгоритм сортировки.

8.2. сортировки данных в массивах

Тема 9. Методы поиска данных: эволюция и сравнительный анализ. Примеры использования.

9.1. Поиск

Тема 10. Функциональное тестирование программного обеспечения на примере мобильных приложений.

10.1. Функциональное тестирование

10.2. Тестирование производительности;

10.3. Тестирование безопасности;

10.4. Тестирование удобства пользования (юзабилити-тестирование);

10.5. Тестирование совместимости;

10.6. Тестирование на восстановление.

Тема 11. Особенности алгоритмизации при разработке WEB-приложений.

11.1. Web-приложений в C#

11.2 . Задачи Web-приложений

Тема 12. Критерии выбора средств разработки WEB-приложений.

12.1. Критерии выбора

Тема 13. Критерии выбора средств разработки мобильных приложений.

13.1. Критерии выбора

Тема 14. Этапы разработки, тестирования и ввода в эксплуатацию мобильных приложений

14.1. Тестирование

14.2. Тестирование внешних сервисов

Тема 15. Тестирование производительности программ: подходы в зависимости от категорий приложений.

15.1.  Тестирование производительности в инженерии программного обеспечения

15.2. Требования к производительности

Тема 16. Варианты построения интерфейса программ: особенности и эволюция.

16.1. Эволюция дизайна интерфейсов операционных систем Windows

Тема 17. Способы организации данных: пользовательский тип данных – структура.

17.1. Тип данных

17.2. Логический тип данных

Тема 18. Рекурсивные и итерационные алгоритмы: особенности и примеры использования

18.1. Рекурсивные алгоритмы

18.2. Рекурсия и итерация

Тема 19. Классификация языков программирования высокого уровня.

19.1. Примеры языков высокого уровня

Тема 20. Сравнительный анализ операторов для различных языков программирования.

20.1. Сравнение языков программирования

Тема 21. Сравнительный анализ процедур для различных языков программирования.

21.1. Процедурные языки

Тема 22. Сравнительный анализ описания данных для различных языков программирования.

22.1. Анализ

Список литературы для написания курсовой работы по дисциплине

Тестирование программы как «белого ящика» заключается в стратегии управления логикой программы, позволяет использовать ее внутреннюю структуру. Критерием выступает исчерпывающее тестирование всех маршрутов и управляющих структур программы.

Разумная и реальная стратегия тестирования – сочетание моделей «черного» и «белого ящиков».

Тема 8. Методы сортировки данных: эволюция и сравнительный анализ. Примеры использования.

8.1. Алгоритм сортировки.

Алгоритм сортировки — это алгоритм для упорядочивания элементов в списке. В случае, когда элемент списка имеет несколько полей, поле, служащее критерием порядка, называется ключом сортировки. На практике в качестве ключа часто выступает число, а в остальных полях хранятся какие-либо данные, никак не влияющие на работу алгоритма.

  • Устойчивость (англ. stability) — устойчивая сортировка не меняет взаимного расположения элементов с одинаковыми ключами.
  • Естественность поведения — эффективность метода при обработке уже упорядоченных или частично упорядоченных данных. Алгоритм ведёт себя естественно, если учитывает эту характеристику входной последовательности и работает лучше.
  • Использование операции сравнения. Алгоритмы, использующие для сортировки сравнение элементов между собой, называются основанными на сравнениях. Минимальная трудоемкость худшего случая для этих алгоритмов составляет О ({\displaystyle n\cdot \log n}n*logn), но они отличаются гибкостью применения. Для специальных случаев (типов данных) существуют более эффективные алгоритмы.

Ещё одним важным свойством алгоритма является его сфера применения. Здесь основных типов упорядочения два:

  • Внутренняя сортировка оперирует массивами, целиком помещающимися в оперативной памяти с произвольным доступом к любой ячейке. Данные обычно упорядочиваются на том же месте без дополнительных затрат.
    • В современных архитектурах персональных компьютеров широко применяется подкачка и кэширование памяти. Алгоритм сортировки должен хорошо сочетаться с применяемыми алгоритмами кэширования и подкачки.
  • Внешняя сортировка оперирует запоминающими устройствами большого объёма, но не с произвольным доступом, а последовательным (упорядочение файлов), то есть в данный момент «виден» только один элемент, а затраты на перемотку по сравнению с памятью неоправданно велики. Это накладывает некоторые дополнительные ограничения на алгоритм и приводит к специальным методам упорядочения, обычно использующим дополнительное дисковое пространство. Кроме того, доступ к данным во внешней памяти производится намного медленнее, чем операции с оперативной памятью.
    • Доступ к носителю осуществляется последовательным образом: в каждый момент времени можно считать или записать только элемент, следующий за текущим.
    • Объём данных не позволяет им разместиться в ОЗУ.

Также алгоритмы классифицируются по:

  • потребности в дополнительной памяти или её отсутствию
  • потребности в знаниях о структуре данных, выходящих за рамки операции сравнения, или отсутствию таковой

8.2. сортировки данных в массивах

Используемые в настоящее время объемы массивов данных достигают размеров, которые еще десятилетие назад казались почти невероятными. Чем большими становятся объемы перерабатываемых данных, тем актуальнее становится задача оптимизации используемых алгоритмов, в том числе и сортировки. В то же время по-прежнему важными остаются задачи, не требующие повышения скорости алгоритмов. Например, для образовательных целей часто более важной является их простота.

Рост требований к скорости алгоритмов сортировки и расширение круга задач, для которых они используются, приводит к тому, что по-прежнему важной и актуальной остается задача сравнительного анализа алгоритмов сортировки.

Целью проведенного исследования было сопоставление преимуществ и недостатков наиболее распространенных алгоритмов сортировки данных в массивах.

Для достижения поставленной цели были поставлены и решены следующие задачи:

1.Определить наиболее распространенные алгоритмы сортировки данных;

2.Выявить достоинства и недостатки данных алгоритмов;

3.Сопоставить достоинства и недостатки алгоритмов сортировки.

При определении наиболее распространенных алгоритмов мы пользовались следующей классификаций: алгоритмы устойчивой сортировки; алгоритмы неустойчивой сортировки; непрактичные алгоритмы сортировки; алгоритмы, не основанные на сравнениях и алгоритмы топологической сортировки.

При использовании алгоритмов неустойчивой сортировки могут меняться местами данные с одинаковыми значениями. Это является недостатком в том случае, когда при сортировке по одному полю данных, состоящих из нескольких полей, важно сохранение взаимного расположения равных элементов важно при сортировке по одному полю данных. В то же время большинство алгоритмов неустойчивой сортировки требуют меньшей памяти и времени, чем алгоритмы устойчивой сортировки. Наиболее известными алгоритмами неустойчивой сортировки являются сортировка Шелла (Shell sort), сортировка расчёской (Comb sort), пирамидальная сортировка (сортировка кучи, Heapsort), плавная сортировка (Smoothsort), быстрая сортировка (Quicksort), интроспективная сортировка (Introsort), терпеливая сортировка (Patience sorting), сортировка по частям (блуждающая сортировка, Stooge sort) и поразрядная сортировка (цифровая сортировка, Radix sort).


Тема 9. Методы поиска данных: эволюция и сравнительный анализ. Примеры использования.

9.1. Поиск

Поиск — обработка некоторого множества данных с целью выявления подмножества данных, соответствующего критериям поиска.

Все алгоритмы поиска делятся на

  • поиск в неупорядоченном множестве данных;
  • поиск в упорядоченном множестве данных.

Упорядоченность – наличие отсортированного ключевого поля.

Тема 10. Функциональное тестирование программного обеспечения на примере мобильных приложений.

10.1. Функциональное тестирование

Функциональное тестирование мобильных приложений обычно охватывает тестирование взаимодействия с пользователем, а также тестирование транзакций. Важные для этого вида тестирования факторы:

  1. Тип приложения, определяемый его бизнес-функциональностью (банкинг, игровая индустрия, социальные сети, образование).
  2. Целевая аудитория (пользователь, компания, образовательная среда).
  3. Канал, по которому распространяется приложение (например, App Store, Google Play или раздача напрямую).

Основные сценарии функциональных тестов:

  1. Проверить корректность работы обязательных полей.
  2. Убедиться, что обязательные поля отображаются на экране не так, как необязательные.
  3. Убедиться, что работа приложения во время запуска/выхода удовлетворяет основным требованиям.
  4. Убедиться, что приложение переходит в фоновый режим в случае входящего звонка. Для этого вам понадобится еще один телефон.
  5. Проверить, может ли телефон хранить, принимать и отправлять SMS-сообщения во время работы приложения. Для этого вам понадобится другой телефон, с которого можно отправить сообщение на тестируемое устройство с уже запущенным приложением.
  6. Убедиться, что устройство работает в многозадачном режиме, когда это необходимо.
  7. Проверить, как функционируют необходимые опции для работы с социальными сетями — Поделиться, Публикация, Навигация.
  8. Убедиться, что приложение поддерживает платежные операции через системы оплаты Visa, Mastercard, Paypal и др.
  9. Проверить адекватность работы сценариев прокрутки страницы.
  10. Проверить, присутствует ли надлежащая навигация между важными модулями приложения.
  11. Убедиться, что количество ошибок округления минимально.
  12. Проверить наличие сообщений об ошибках, например, сообщения «Ошибка сети. Пожалуйста, попробуйте позже» в случае некорректной работы сети.
  13. Убедиться, что установленное приложение не препятствует нормальной работе других приложений и не съедает их память.
  14. Проверить, способно ли приложение вернуться в то состояние, в котором оно находилось перед приостановкой (например, жесткая перезагрузка или системный сбой).
  15. Установка приложения должна проходить без значительных ошибок при условии, что устройство соответствует системным требованиям.
  16. Убедиться, что автоматический запуск приложения работает корректно.
  17. Проверить, как приложение работает на всех устройствах поколений 2G, 3G и 4G.
  18. Выполнить регрессивное тестирование для выявления новых программных ошибок в существующих и уже модифицированных областях системы. Дополнительное проведение всех предыдущих тестов для проверки поведения программы после изменений.
  19. Убедиться, что существует доступное руководство пользователя.

10.2. Тестирование производительности;

Основная цель этого вида тестирования — убедиться в том, что приложение работает приемлемо при определенных требованиях производительности: доступ большому числу пользователей, устранение важного элемента инфраструктуры, как, например, сервера базы данных, и др.

Основные сценарии тестирования производительности мобильных приложений:

  1. Определить, работает ли приложение одинаково в разных условиях загрузки сети.
  2. Выяснить, способно ли текущее покрытие сети обеспечить работу приложения на различных уровнях пользовательской нагрузки.
  3. Выяснить, обеспечивает ли существующая клиент-серверная конфигурация оптимальную производительность.
  4. Найти различные узкие места приложения и инфраструктуры, которые снижают производительность приложения.
  5. Проверить, соответствует ли требованиям время реакции приложения.
  6. Оценить способность продукта и/или аппаратного обеспечения справляться с планируемыми объемами нагрузки.
  7. Оценить время, в течение которого аккумулятор может поддерживать работу приложения в условиях планируемых объемов нагрузки.
  8. Проверить работу приложения в случаях перехода из Wi-Fi-сети в мобильную 2G/3G-сеть и наоборот.
  9. Проверить, что каждый из уровней памяти процессора работает оптимально.
  10. Убедиться в том, что потребление батареи и утечка памяти не выходят за пределы нормы, а работа различных ресурсов и сервисов, таких как GPS-навигация или камера, соответствует требованиям.
  11. Проверить стойкость приложения в условиях жесткой пользовательской нагрузки.
  12. Проверить эффективность сети в условиях, когда устройство находится в движении.
  13. Проверить производительность приложения, если оно работает в условиях непостоянного подключения к интернету.

10.3. Тестирование безопасности;

Основная цель этого типа тестирования — обеспечить безопасность сети и данных приложения.

Ниже приведены ключевые действия для проверки безопасности мобильного приложения.

  1. Убедиться в том, что данные пользователей приложения — логины, пароли, номера банковских карт — защищены от сетевых атак автоматизированных систем и не могут быть найдены путем подбора.
  2. Удостовериться в том, что приложение не дает доступ к секретному контенту или функциональности без надлежащей аутентификации.
  3. Убедиться в том, что система безопасности приложения требует надежного пароля и не позволяет взломщику завладеть паролями других пользователей.
  4. Убедиться в том, что время таймаута сессии адекватно для приложения.
  5. Найти динамические зависимости и принять меры для защиты этих уязвимых участков от взломщиков.
  6. Защитить приложение от атак типа SQL-injection.
  7. Найти случаи неуправляемого кода и устранить его последствия.
  8. Удостовериться в том, что срок действия сертификатов не истек, вне зависимости от того, использует приложение Certificate Pinnig или нет.
  9. Защитить приложение и сеть от DoS-аттак.
  10. Проанализировать требования хранения и проверки данных.
  11. Обеспечить управление сеансами для защиты информации от неавторизованных пользователей.
  12. Проверить все криптографические коды и, если необходимо, исправить ошибки.
  13. Удостовериться в том, что бизнес-логика приложения защищена и не подвержена атакам извне.
  14. Проанализировать взаимодействие файлов системы, выявить и скорректировать уязвимые места.
  15. Проверить обработчики протокола (например, не пытаются ли перенастроить целевую страницу по умолчанию, используя вредоносные плавающие фреймы).
  16. Защитить приложение от вредоносных атак на клиентов.
  17. Защитить систему от вредоносных внедрений в момент работы программы.
  18. Предотвратить возможные вредоносные последствия кэширования файлов.
  19. Предотвратить ненадежное хранение данных в кэш-памяти клавиатуры устройства.
  20. Предотвратить возможные вредоносные действия файлов cookie.
  21. Обеспечить регулярный контроль безопасности данных.
  22. Изучить пользовательские файлы и предотвратить их возможное вредоносное влияние.
  23. Обезопасить систему от случаев переполнения буфера или нарушения целостности информации в памяти.
  24. Сделать анализ различных потоков данных и защитить систему от их возможного вредоносного влияния.

10.4. Тестирование удобства пользования (юзабилити-тестирование);

Тестирование удобства использования — это метод тестирования, направленный на установление степени удобства использования, обучаемости, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий

Тестирование удобства пользования дает оценку уровня удобства использования приложения по следующим пунктам:

Производительность, эффективность (efficiency) — сколько времени и шагов понадобится пользователю для завершения основных задач приложения, например, размещения новости, регистрации, покупки (чем меньше времени и шагов понадобится пользователю, тем лучше).

Правильность (accuracy) — сколько ошибок сделал пользователь во время работы с приложением?

Активизация в памяти (recall) — как долго пользователь помнит о том, как пользоваться приложением, после приостановки работы с ним на длительный период времени? (Повторное выполнение операций после перерыва должно проходить быстрее, чем у нового пользователя).

Эмоциональная реакция (emotional response) — Как пользователь себя чувствует после завершения задачи: растерян, испытал стресс или, наоборот, ему все понравилось? Порекомендует ли пользователь систему своим друзьям?

Для улучшения удобства использования полезно следовать двум принципам:

«Защита от дурака». Если поле предполагает ввод номера телефона, то стоит ограничить диапазон ввода только цифрами и соответствующим образом сформировать клавиатуру. Аналогично для e-mail и остальных элементов, которые предполагают пользовательский ввод данных.

Использовать цикл Демминга (планирование-действие-проверка- корректировка), то есть собирать информацию о дизайне и удобстве использования у существующих пользователей, и на основе их мнений планировать изменения в приложении.

10.5. Тестирование совместимости;

Конфигурационное тестирование проводится для того чтобы обеспечить оптимальную работу приложения на разных устройствах — с учетом их размера, разрешения экрана, версии, аппаратного обеспечения и пр.

Важнейшие сценарии конфигурационного тестирования: