Глава 3. Разработка ПО.
§3.1. Базовые понятия.
§3.1.1. Понятия, используемые в разработке ПО.
1. Программный продукт.
Программа — завершенное изделие, пригодное для запуска в подходящей вычислительной системе, и выполняющее заданные функции.
Программный комплекс — набор взаимодействующих программ, согласованных по интерфейсам (функциям и форматам), и составляющих в совокупности средство для решения заданного круга задач.
Программный продукт — программа или программный комплекс, предназначенный для передачи (на коммерческих или некоммерческих условиях) в эксплуатацию другим лицам. Программный продукт должен быть сопровожден подробной документацией.
Программное средство — это программа или логически связанная совокупность программ, снабженная документацией.
Программное обеспечение — совокупность программных средств, входящих в состав вычислительной системы.
2. Жизненный цикл ПО.
Жизненный цикл программного обеспечения — весь период его разработки и эксплуатации, начиная с момента возникновения замысла и заканчивая прекращением всех видов его использования.
Существует простейшее представление жизненного цикла, которое включает следующие стадии:
анализ требований;
проектирование;
программирование;
тестирование и отладка;
эксплуатация.
3. Проект.
Проект — это ориентированная на программный продукт совокупность действий разработчиков.
Большие проекты по возможности разбиваются на обособленные части, из которых выделить на три основные категории разработок.
Свойство программного продукта — архитектурный элемент, направленный на некоторый специфический аспект продукта. Свойство может быть реализовано в одном или нескольких компонентах.
Компонент — совокупность свойств. Обычно компонент предполагает значительность. Пример компонента — подсистема в текстовом редакторе для расстановки переносов в словах.
Продукт – совокупность компонентов, объединенная с целью решения определенных задач пользователя. Над продуктом работает команда разработчиков продукта.
§3.1.2. Основные этапы разработки ПО.
Анализ требований — определение функционального наполнения программного продукта, требований к пользовательскому интерфейсу. Результат этапа — составление спецификации.
Спецификацией называется описание требуемой функциональности и свойств продукта, составленное в форме, позволяющей однозначно оценить, удовлетворяет ли созданный программный продукт выдвинутым требованиям.
Проектирование — определение структуры программы и интерфейсов взаимодействия модулей, выбор алгоритмов решения задач. При проектировании активно используется UML.
Программирование — написание программного кода, компиляция.
Тестирование и отладка — проверка соответствия результата спецификации.
Эксплуатация — передача продукта пользователю, сопровождение, развитие.
§3.2. Технологии разработки.
3.2.1. Методологии программирования.
1) Императивное — пошаговое изменение состояния вычислителя. Архитектура фон Неймана. Языки: Fortran, Algol, Pascal, C.
2) Объектно-ориентированное. Методология основана на объектной декомпозиции (объекты, связи, сообщения). Основные принципы: инкапсуляция (сокрытие информации, комбинирование данных и функций), наследование (доступ к методам порождающих объектов), полиморфизм (одно имя для разных реализаций действия). C++, Object Pascal, Java, C#.
3) Функциональное — программа есть суперпозиция функций. Активно используется рекурсия. Язык Lisp.
4) Логическое. Составляющие: факты, логические формулы, вывод. Язык Prolog.
3.2.2. Технологии программирования.
1. Технологические процессы.
Обычно выделяют следующие технологические процессы:
возникновение и исследование идеи;
управление;
анализ требований;
проектирование;
программирование;
тестирование и отладка;
ввод в действие;
эксплуатация и сопровождение;
завершение эксплуатации.
2. Технологии.
Технологии программирования различаются в способе организации данных процессов.
а) Классические.
Каскадный подход предполагает последовательное выполнение процессов.
Каркасный — присутствует более сложная структуризация процессов.
б) Формальные.
Примером формальных технологий является генетический подход — синтез программы по спецификации.
в) Гибкие.
Подходы быстрой разработки (кодирование и исправление).
Адаптивные, в частности, экстремальное программирование. Особенности данной технологии: детали реализации уточняются по ходу программирования; тесты пишутся до начала программирования и активно используются в ходе разработки.
Исследовательское программирование.
3.2.3. Тестирование.
1. Методы тестирования.
Функциональное (черного ящика) — методология тестирования, предлагающая абстрагироваться от внутренней структуры программы и воспринимать программу как отображение множества возможных значений входных данных (параметров) во множество возможных значений выходных данных. Тестовые данные подбираются
Структурное (белого ящика) — тесты строятся с учетом структуры программы, так чтобы проверить функционирование и взаимодействие всех частей.
2. Виды тестирования.
Тестирование различают по объему: процедур, модулей, подсистем, интеграционное.
Различают динамическое тестирование (т. е. на компьютере), которое может быть автоматическое и ручное, и статическое (анализ кода).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.