27. Основные этапы решения задач на ЭВМ; критерии качества программы; диалоговые программы; дружественность, жизненный цикл программы.
Программирование – теоретическая и практическая деятельность, связанная с созданием программного обеспечения.
Решение задач на ЭВМ включает в себя следующие основные этапы, часть из которых осуществляется без участия ЭВМ.
Постановка задачи:
- сбор информации о задаче;
- формулировка условия задачи;
- определение конечных целей решения задачи;
- определение формы выдачи результатов;
- описание данных (их типов, диапазонов величин, структуры и т. п.).
Анализ и исследование задачи, модели:
- анализ существующих аналогов;
- анализ технических и программных средств;
- разработка математической модели;
- разработка структур данных.
Разработка алгоритма:
- выбор метода проектирования алгоритма;
- выбор формы записи алгоритма (блок-схемы, псевдокод и др.);
- выбор тестов и метода тестирования;
- проектирование алгоритма.
Программирование:
- выбор языка программирования;
- уточнение способов организации данных;
- запись алгоритма на выбранном языке программирования.
Тестирование и отладка:
- синтаксическая отладка;
- отладка семантики и логической структуры;
- тестовые расчеты и анализ результатов тестирования;
- совершенствование программы.
Пояснение: для формирования таких тестов определены две стратегии:
- «белого» или «прозрачного ящика» (тестирование маршрутов);
- «черного ящика»
При тестировании с использованием стратегии «белого ящика» тесты стараются подобрать так, чтобы хотя бы один раз пройти по каждой ветви алгоритма. Стратегия имеет существенный недостаток: по ней принципиально невозможно обнаружить пропущенный маршрут. При тестировании с использованием стратегии «черного ящика» структура программы считается неизвестной, и тесты подбирают так, чтобы проверить выполнение всех функций программы, а затем отследить реакцию на ввод некорректных данных. На практике лучшие результаты получают, используя при разработке тестов обе стратегии.
Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2-5.
Сопровождение программы:
- доработка программы для решения конкретных задач;
- составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.
Критерии качества программы
Качество программного продукта (ПП) – это совокупность его черт и характеристик, которые влияют на способность ПП удовлетворять заданные потребности пользователя.
Качество ПП является удовлетворительным, если количественные показатели свойств гарантируют успешное его использование.
Критериями качества ПП являются:
- Функциональность
- Соответствие назначению
- Точность
- Способность взаимодействовать со средой
- Соответствие нормам
- Безопасность (защита от взлома данных и других преступных посягательств)
- Надежность
- Зрелость ("обкатанность")
- Отказоустойчивость
- Способность восстанавливаться после сбоев
- Пригодность к использованию
- Понимаемость
- Изучаемость
- Удобство и простота в работе
- Эффективность
- Быстродействие и время отклика
- Потребление ресурсов
- Сопровождаемость
- Анализируемость (диагностика причин ошибок и сопоставление с исходным кодом)
- Пригодность к изменениям
- Стабильность
- Тестируемость
- Переносимость
- Адаптируемость
- Легкость инсталляции
- Мобильность
- Соответствие нормам по переносимости и инсталляции
- Заменяемость (способность заменить аналоги?)
Функциональность – это способность ПП выполнять набор функций, определенных его внешними спецификациями.
Надежность ПП – это способность безотказно выполнять заданные функции при заданных условиях в течение заданного периода времени с высокой степенью вероятности. Таким образом, надежность не означает безошибочности, для надежного ПП важно, чтобы ошибки появлялись при применении ПП достаточно редко и не приводили к катастрофическим последствиям.
Легкость применения – это способность минимизировать затраты пользователя на подготовку и ввод исходных данных и оценку полученных результатов, а также вызывать положительные эмоции пользователя.
Эффективность – это отношение уровня услуг, предоставляемых ПП к объему используемых вычислительных ресурсов. Напомню, что объем используемых вычислительных ресурсов количественно определяется затратами машинного времени и оперативной памяти на выполнение заданных функций.
Сопровождаемость – это такие характеристики ПП, которые позволяют минимизировать усилия по внесению изменений при обнаружении ошибок в ПП и при его модификации. Не последнюю роль в повышении сопровождаемости играют комментарии к тексту программы!
Мобильность – это способность ПП быть перенесенным из одной вычислительной среды (окружения) в другую, в частности, с одной ЭВМ на другую (применяют термин “перенос с одной платформы на другую”).
Диалоговые программы
Основным методом общения пользователя с современными программами является диалог.
Имеются два вида программ: не диалоговые программы (выполняются без дополнительного обращения к пользователю) и диалоговые (интерактивные).
Диалоговая программа — программа, рассчитанная на удобное взаимодействие пользователя и ЭВМ. Она предполагает, что пользователь должен быть подготовлен к работе в диалоге.
Пользователи, как правило, не обязаны быть программистами, но должны быть специалистами в той области, для которой предназначена программа. Только в этом случае можно рассчитывать на эффективное взаимодействие пользователя с программным комплексом.
Разработчик диалоговой программы должен позаботиться о защите своей программы от некорректных действий пользователя. Пользователь может ввести неправильные данные из-за своей низкой квалификации или по невнимательности, а также намеренно с определенными целями.
Организация взаимодействия между пользователем и выполняемой программой называется интерфейсом пользователя и компьютера.
С точки зрения программного обеспечения в состав интерфейса пользователь-компьютер входят два компонента:
- процесс диалога, то есть двусторонний обмен информацией между пользователем и компьютером;
- процесс ввода-вывода, обеспечивающий прием от пользователя и передачу ему данных через различные физические устройства, например дисплей, клавиатуру, мышь.
Жизненный цикл программы
Жизненный цикл и этапы разработки программного обеспечения.
Жизненным циклом программного обеспечения называют период от момента появления идеи создания некоторого программного обеспечения до момента завершения его поддержки фирмой – разработчиком или фирмой, выполнявшей сопровождение.
Процесс разработки в соответствии со стандартом предусматривает действия и задачи, выполняемые разработчиком, и охватывает работы по созданию программного обеспечения и его компонентов в соответствии с заданными требованиями, включая оформление проектной и эксплуатационной документации, а также подготовку материалов, необходимых для проверки работоспособности и соответствия качества программных продуктов, материалов, необходимых для обучения персонала, и т.д.
Постановка задачи
Впроцессе постановки задачи четко формулируют назначение программного обеспечения и определяют основные требования к нему. Каждое требование представляет собой описание необходимого или желаемого свойства программного обеспечения. Различают функциональные требования, определяющие функции, которые должно выполнять разрабатываемое программное обеспечение, и эксплуатационные требования, определяющие особенности его функционирования.
Анализ требований и определение спецификаций
Спецификациями называют точное формализованное описание функций и ограничений разрабатываемого программного обеспечения. Соответственно различают функциональные и эксплуатационные спецификации. Совокупность спецификаций представляют собой логическую модель проектируемого программного обеспечения. Для получения спецификаций выполняют анализ требований технического задания, формулируют содержательную постановку задачи, выбирают аппарат формализации, строят модель предметной области, определяют подзадачи и выбирают или разрабатывают методы их решения. На этом этапе также целесообразно сформировать тесты для поиска ошибок в проектируемом программном обеспечении, обязательно указав ожидаемые результаты.
Проектирование
Основной задачей этого этапа является определение подробных спецификаций разрабатываемого программного обеспечения. Процесс проектирования сложного программного обеспечения обычно включает:
- Проектирование общей структуры – определение основных компонентов и их взаимосвязей;
- Декомпозицию компонентов и построение структурных иерархий в соответствии с рекомендациями блочно-иерархического подхода;
- Проектирование компонентов.
Результатом проектирования является детальная модель разрабатываемого программного обеспечения вместе со спецификациями его компонентов всех уровней.
Реализация
Реализация представляет собой процесс поэтапного написания кодов программы на выбранном языке программирования (кодирование), их тестирование и отладку.
Сопровождение
Сопровождение – это процесс создания и внедрения новых версий программного продукта. Причинами выпуска новых версий могут служить:
- Необходимость исправления ошибок, выявленных в процессе эксплуатации предыдущих версий;
- Необходимость совершенствования предыдущих версий, например, улучшения интерфейса, расширения состава выполняемых функций или повышения его производительности;
- Изменение среды функционирования, например, появление новых технических средств и / или программных продуктов, с которыми взаимодействует сопровождаемое программное обеспечение.
На этом этапе в программный продукт вносят необходимые изменения, которые могут потребовать пересмотра проектных решений, принятых на любом предыдущем этапе.