
- •О. В. Шишов технология разработки программных продуктов
- •1. Программы и программирование
- •1.1 Основные определения
- •1.2. Классификация программ и различные виды программирования
- •1.3. Категории специалистов, занятых разработкой и эксплуатацией программ
- •2. Жизненный цикл программного обеспечения
- •2.1 Основные этапы жизненного цикла и их взаимосвязь
- •2.2 Стратегии и модели жизненного цикла
- •3. Качество по
- •3.1 Критерии оценки качества по
- •3.2 Методы оценки качества программного средства
- •4. Надежность программных продуктов
- •4.1 Надежность и виды отказов
- •4.2 Надежность и правильность программы
- •4.3. Вероятностный подход к оценке надежности
- •4.4 Факторы надежности
- •4.5 Приемы надежного программирования
- •6.2. Стандарты технологии создания программных продуктов
- •6.3. Основные этапы технологического процесса разработки программ
- •7. Структурное проектирование программных продуктов
- •7.1. Модули. Сцепление и связность модулей
- •7.2. Структура программных продуктов
- •7.3. Методы структурного программирования
- •8. Алгоритмическое представление задачи программирования
- •8.1. Свойства алгоритмов
- •8.2. Формы записи алгоритмов
- •8.3. Базовые алгоритмические структуры
- •9. Языки программирования
- •9.1. Основные понятия и элементы языков программирования
- •9.2. Классификация языков программирования
- •9.3. Развитие языков программирования
- •10. Пользовательский интерфейс
- •10.1. Типы интерфейсов
- •10.2. Этапы разработки пользовательского интерфейса
- •10.3. Критерии оценки интерфейса пользователем
- •11. Порядок работы эвм при выполнении программ. Трансляторы, интерпритаторы, компиляторы
- •12. Оптимизация программ
- •13. Отладка и тестирование программного обеспечения
- •13.1. Классификация неисправностей и ошибок в программе
- •13.2. Порядок и способы отладки и тестирования программ
- •13.3. Методы тестирования
- •13.4. Требования и рекомендации по тестированию программ
- •13.4. Программирование «с защитой от ошибок»
- •14. Аттестация программного средства
- •15. Сопровождение по
- •16. Защита программных продуктов
- •16.1. Обеспечение защищенности программных средств
- •16.3. Правовые методы защиты программных продуктов
- •17. Документорование программных продуктов
- •17.1. Виды программных документов
- •17.2. Содержание документации по еспд
- •17.3. Стиль оформления программы
- •Содержание
10.2. Этапы разработки пользовательского интерфейса
Разработка пользовательского интерфейса включает те же основные этапы, что и разработка программного обеспечения:
• постановка задачи – определение типа интерфейса и общих требований к нему;
• анализ требований и определение спецификаций – определение сценариев использования и пользовательской модели интерфейса;
• проектирование – проектирование диалогов и их реализация в виде процессов ввода-вывода;
• реализация – программирование и тестирование интерфейсных процессов.
При проектировании пользовательских интерфейсов необходимо учитывать психофизические особенности человека, связанные с восприятием, запоминанием и обработкой информации.
Существуют три совершенно различные модели пользовательского интерфейса: модель программиста, модель пользователя и программная модель.
10.3. Критерии оценки интерфейса пользователем
Многочисленные опросы и обследования, проводимые ведущими фирмами по разработке программного обеспечения, показали, что основными критериями оценки интерфейсов пользователем являются:
• простота освоения и запоминания операций системы – конкретно оценивают время освоения и продолжительность сохранения информации в памяти;
• скорость достижения результатов при использовании системы – определяется количеством вводимых или выбираемых мышью команд и настроек;
• субъективная удовлетворенность при эксплуатации системы (удобство работы, утомляемость и т. д.).
Графические пользовательские интерфейсы поддерживаются операционными системами Windows, Apple Macintosh, OS/2 и т. д. В рамках указанных операционных систем для таких интерфейсов разработаны наборы стандартных компонентов взаимодействия с пользователем. Эти наборы не идентичны, как и основные приемы работы с интерфейсами различных операционных систем.
Пользовательские интерфейсы большинства современных программ строятся по технологии WIMP: W – Windows (окна), I – Icons (пиктограммы), М – Mouse (мышь), Р – Pop-up (всплывающие или выпадающие меню). Основными элементами графических интерфейсов, таким образом, являются: окна, пиктограммы, компоненты ввода–вывода и мышь, которую используют в качестве указующего устройства и устройства прямого манипулирования объектами на экране.
11. Порядок работы эвм при выполнении программ. Трансляторы, интерпритаторы, компиляторы
Программа – это последовательность инструкций, предназначенных для выполнения компьютером. В настоящее время программы оформляются в виде текста, который записывается в файлы. Этот текст является результатом деятельности программиста и, несмотря на специфику формального языка, остаётся программой для программиста.
Процесс создания программы предполагает несколько этапов. За этапом разработки проекта программы и алгоритма следует этап программирования. На этом этапе пишется программа.
Файл с исходным текстом программы (его также называют исходным модулем) обрабатывается транслятором, который осуществляет перевод программы с языка программирования в понятную машине последовательность кодов.
Транслятор (англ. translator – переводчик) – это программа–переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.
Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.
Компилятор (англ. compiler – составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор (англ. interpreter – истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того, как программа откомпилирована, ни сама исходная программа, ни компилятор более не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию – в зависимости от того, для каких целей он создавался. Например, Паскаль обычно используется для решения довольно сложных задач, в которых важна скорость работы программ. Поэтому данный язык обычно реализуется с помощью компилятора.
С другой стороны, Бейсик создавался как язык для начинающих программистов, для которых построчное выполнение программы имеет неоспоримые преимущества.
Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения.
Рассмотрим процесс компиляции более подробно и полно. Он разделяется на несколько этапов.
На первом этапе исходный текст (он обычно хранится в виде текстового файла) подвергается лексической обработке. Программа разделяется на предложения, предложение делится на элементарные составляющие (лексемы). Каждая лексема распознаётся (имя, ключевое слово, литерал, символ операции или разделитель) и преобразуется в соответствующее двоичное представление. Этот этап работы транслятора называют лексическим анализом.
Затем наступает этап синтаксического анализа. На этом этапе из лексем собираются выражения, а из выражений – операторы. Невозможность построить разрешенную конструкцию является признаком синтаксической ошибки в тексте исходной программы.
После синтаксического анализа наступает этап поэтапной генерации кода. На этом этапе происходит замена операторов языка высокого уровня инструкциями ассемблера, а затем последовательностями машинных команд. Но пока в результате получается файл не готовый к исполнению. Результат преобразования исходного текста программы записывается в виде двоичного файла (его называют объектным модулем) с расширением «.obj».
Объектный модуль можно выполнять лишь после специальной дополнительной обработки (компоновки), которая осуществляется специальной программой–компоновщиком.
Что же нужно скомпоновать, т. е. соединить в единое целое? Дело в том, что проектировщики трансляторов предусмотрели, что в большинстве случаев программы создаются из отдельных фрагментов (модулей). Если программа сложная, то деление ее на части упрощает работу над ней. Можно каждую часть отлаживать отдельно, а отладить короткую программу всегда легче, чем большую, можно разработку отдельных частей предоставить вести отдельным программистам и за счет этого добиться существенного сокращения сроков работы над всей программой и т. д. Можно конечно компоновать отлаженные части программы в текстовом виде, но это не всегда эффективно и возможно. Например, если Вы используете в качестве модулей библиотеку стандартных программ, то эти программы поставляются в виде объектных файлов, а не текстовых. Во всех описанных пока случаях Вы должны явно указать транслятору (программе–компоновщику) какие файлы надо скомпоновать.
Но кроме этого компоновщик также добавляет к компонуемой программе коды так называемых библиотечных функций. Во–первых, это коды стандартных программ вычисления математических функций (sin, tg, exp), которые реализованы с использованием числовых методов. Во–вторых, это коды функций отвечающих за выполнение конкретных действий, например, вывод информации на экран дисплея и т. п. Эти компоновки транслятор выполняет автоматически.
Но этим перечень задач, которые решаются на этапе компоновки не ограничивается. Программа строится из инструкций и операторов. В свою очередь, операторы включают выражения, которые состоят из операций и операндов. По крайней мере, части операндов в выражениях должны соответствовать отдельные «участки» оперативной памяти, предназначаемые, например, для сохранения результатов вычислений. В ходе трансляции устанавливается соответствие между операндами и адресами областей памяти вычислительной машины. Задача компоновщика состоит в согласовании адресов во всех фрагментах кода (объектных файлов), из которых собирается готовая к выполнению программа. Компоновщик отвечает за то, чтобы конкретному операнду выражения соответствовала определённая область (ячейка) памяти.
Программа-компоновщик устанавливает все связи между отдельными компонуемыми модулями, поэтому ее часто называют редактором связей или линкировщиком (от англ. link – связь).
Преобразованная компоновщиком программа называется загрузочным или выполнимым модулем. Файлы, содержащие загрузочные модули, называют загрузочными или выполнимыми файлами. Часто они имеют расширение (формат) «.ехе».
Таблица Этапы сборки программы
Действия |
Исполнитель |
Результат |
Ввод исходного текста программы на языке программирования |
Программист |
Исходный модуль (файл с кодом программы) |
Компиляция |
Компилятор (программа языковой обработки) |
Объектный модуль (программа в машинных кодах) |
Сборка готовой программы из нескольких файлов, библиотек |
Линкер (сборщик) |
Исполняемый файл (загрузочный модуль) |
Выполнение программы |
Операционная система (выполнение) + Пользователь (загрузка исходных данных, управление) |
Результаты расчета |
Полученный после компиляции машинный код – это готовый исполняемый файл, он выполняется только в той операционной системе, под которую был скомпилирован. Некоторые современные среды разработки, например, Free Pascal, являются кроссплатформенными – разные версии среды устанавливаются под разные операционные системы и позволяют создавать под них программы.