Технология программирования Основные термины: 1) программа (имеет вход и выход, может состоять из одного или нескольких программных модулей); 2) программный (исполняемый) модуль (такая программа, которая хранится, как файл, при выполнении предварительно записывается (загружается) в оперативную память; 3) текст программы – может существовать в разных видах (на исходном языке программирования, на языке ассемблера, на машинном языке); 4) программная система, или просто система (программа или набор программ, взаимодействующих с людьми, техническими устройствами и т.п., имеет много входов и выходов, но является единым целым); 5) программный комплекс (набор программ, предназначенных для решения некоторого множества задач, для решения отдельной задачи обычно требуются не все программы комплекса); 6) инструментальный программный комплекс (набор программных средств, предназначенных для разработки программ для решения некоторого множества задач, может существовать в виде библиотек процедур, классов и т.п.); 7) программный продукт – программа (система, комплекс) + документация, необходимая для ее использования; 8) жизненный цикл программы (системы, комплекса) – время от начала ее создания до последнего применения. Технология программирования Этапы разработки: 1) этап технического задания (ТЗ) – разработка технических требований к системе; 2) проектирование архитектуры системы – разработка модели функционирования системы, основных структур данных, общей структуры системы; 3) проектирование и разработка системы – детализация структур данных и структуры системы, программирование и тестирование системы; 4) этап опытной эксплуатации – доработка системы, повторное тестирование при любых изменениях. Следующий этап жизненного цикла: сопровождение системы – доработка, совершенствование, выпуск новых, улучшенных версий. Технология программирования Программная документация: - документация периода разработки: техническое задание, эскизный, технический и рабочий проекты; - эксплуатационная документация: руководство по установке программы (системы); описание применения - документация сопровождения: текст программы; описание программы Разработка сверху-вниз (метод поэтапной детализации) Программа вычисления определителя: {Описания} begin {Ввод входных данных} {Вычисление определителя} {Вывод выходных данных} Программа end. Описания Ввод входных данных Выбор ведущего элемента Вычисление определителя Перестановка строк Вычитание строк Вывод выходных данных Вычисление определителя Сложность комплексного программного продукта комплексный программный продукт комплекс 3 2 программа 1 1 программа 2 3 программный продукт Технология тестирования 1. Тестирование малых программ (процедур) 2. Тестирование больших программ (процедур, классов) - Восходящая технология тестирования (с помощью тестирующих программ) - Нисходящая технология тестирования (с помощью программ-заглушек) 3. Тестирование параметров программы (процедуры, системы) 4. Тестирование документации 5. Аналитическое тестирование (доказательство) при проектировании и написании программ, процедур Законы Брукса 1. Если процесс разработки системы не укладывается в запланированные сроки, то привлечение новых людей чаще всего не сокращает, а еще больше удлиняет процесс разработки. 2. Первая система (ее 1-й вариант) всегда создается «на выброс». Следствие: поэтому первую систему надо создавать в таком виде, чтобы было не жалко выбрасывать. 3. Вторая система (ее 2-й вариант) чаще всего обладает «эффектом второй системы» - перегруженностью функций, излишней сложностью и т.п. Следствие: вторую систему не имеет смысла «доводить до блеска», после ее испытания и опробования надо быстрее переходить к созданию третьей системы. 4. При увеличении сложности системы в n раз для ее создания в прежние сроки обычно требуется в n2 раз больше людей. Следствие: специализировать программистов на выполнении отдельных функций: написание программ, тестирование, написание документации и т.п.