
- •Алгоритм линейного поиска в одномерном массиве. Зависимость затрат на линейный поиск в среднем и в худшем случае от числа элементов массива. Улучшение линейного поиска: поиск с барьером.
- •Алгоритм двоичного поиска в одномерном отсортированном массиве. Зависимость затрат на двоичный поиск в среднем и в худшем случае от числа элементов массива.
- •3. Последовательная и связанная память. Представление линейных списков в последовательной и связанной памяти. Достоинства и недостатки того и другого представления.
- •Стеки и очереди в непрерывной памяти
- •Представление стека в связаннной памяти
- •Представление очереди в непрерывной памяти
- •Представление очереди в связаннной памяти
- •5. Понятие обхода дерева. Виды обходов двоичного дерева. Определение структуры двоичного дерева по двум заданным обходам. Рекурсивные алгоритмы обходов двоичных деревьев.
- •Примеры обходов должны различаться в ответах разных студентов
- •7. Деревья поиска. Алгоритм исключения узла из дерева поиска.
- •8 Понятие программного обеспечения, тенденции развития программного обеспечения.
- •It-услуги
- •9.1 Функциональная и объектно-ориентированные стратегии разработки по
- •Функционально-ориентированная стратегия разработки по (фос)
- •Объектно-ориентированная стратегия разработки по (оос)
- •10 - Основные принципы ооп
- •11.1 - Принципы отладки программных систем.
- •12.1 - Обобщенные и элементарные критерии качества программного обеспечения.
- •12.2 - Обобщенные и элементарные критерии качества программного обеспечения.
- •13.1- Организация коллективов программистов и разработчиков
- •13.2- Организация коллективов программистов и разработчиков
- •14. Тестирование программного обеспечения. Автономное и комплексное тестирование см. Также распечатку гэ_г_тестирование, структуру ответа - лучше по ней
- •14.2 - Тестирование программного обеспечения. Автономное и комплексное тестирование
- •Автономное и комплексное тестирование
- •14.3 - Тестирование программного обеспечения. Автономное и комплексное тестирование алгоритм тестирования подпрограммы / метода (модулей)
- •15.1 - Понятие класса и объекта. Конструкторы и деструкторы.
- •15.2 - Понятие класса и объекта. Конструкторы и деструкторы.
- •16 - Статические и виртуальные методы
9.1 Функциональная и объектно-ориентированные стратегии разработки по
Функционально-ориентированная
стратегия (70-е-80-е гг.) базировалась на
традиционном программировании со
структурным программированием в основе
(без классов и без объектов). Разработчики:
Дейк,
Строхон???,
Йордан Йордан
(Yourdon) и Гейн-Сарсон (Gane-Sarson).
Стратегия и методология была одна.
80-е гг: распространение объектно-ориентированной стратегии. Рубеж 80-90 годов – объектный подход и стратегия. Разработчики: Г.Буч, А.Джекобсон, Д.Рэмбо.
Этапы разработки ПО у стратегий те же самые:
технико-экономическое обоснование разработки ПО (требования к системе, ТЗ на разработку),
анализ предметной области (методы решения задач, проектная документация),
проектирование системы (общее и детальное) – архитектура системы, алгоритм решения задач, структура данных, спецификация компонентов системы,
программирование – разработка алгоритмов на вспомогательном языке,
тестирование и отладка,
сопровождение и эксплуатация.
Отличия: порядок выполнения и число выполнений каждого этапа, содержимое и суть этапов.
Функционально-ориентированная стратегия разработки по (фос)
Цель ФОС – разработка ПС в виде совокупности взаимосвязанных модулей, состоящих из подпрограмм.
Методологии (методы) ФОС
Нисходящая разработка (каскадный метод)
Восходящая разработка
Метод расширения ядра (строится схема иерархии, определяются основные функции ПС, разработка начинается именно с них. Получается последовательность кругов: ядро системы, второстепенные функции, интерфейс, исключения и т.д.).
Смешанная (нисходящая разработка + метод расширения ядра)
Каскадный метод
В процессе проектирования по каскадному методу должна быть построена схема иерархии (функциональная схема) - ориентированный граф с вершинами – функциями и ребрами – отношениями функций к подфункциям.
Не учитывает логику выполнения операций, порядок выполнения действий.
Процесс построения схемы иерархии: разбиение функции на подфункции (движение сверху вниз).
Относится к этапам анализа предметной области, проектирования, программирования, отладки и тестирования (???).
Требования при построении схемы:
одна подпрограмма – одна задача;
функция должна иметь имя – идентификатор;
одна подпрограмма, реализующая одну функцию должна иметь один вход и один выход;
функция должна передавать данные лишь программе ее вызывающей;
функция может иметь и вызывать другие подфункции;
запрет на повторное использование информации от предыдущих вызовов функции.
ПРИМЕР СХЕМЫ ИЕРАРХИИ
Минусы схемы иерархии:
на этапе проектирования не учитываются логика работы ПС и данные, необходимые чтобы понять, когда стоит прекратить дробление функции;
может возникнуть рассредоточение функций, т.е. несколько подпрограмм будут делать одно и то же;
граф, описывающий схему иерархии, не содержит цикл, т.е. нельзя переходить от нижнего уровня к высшему.
Плюсы схемы иерархии:
разработка сверху вниз;
дробление функций на подфункции;
возможность оценить ПС пока она еще не сделана – программы «заглушки» - фиктивные подпрограммы, принимающие и выдающие данные; для каждой системы может быть несколько правильных схем иерархии.
Проектирование – наиболее критичный этап ФОС. Построение, анализ и схема иерархии – самое главное при проектировании ФОС.
Порядок разработки модулей, подпрограмм: иерархический и операционный.
Иерархический метод
Основывается на схеме иерархии. Суть – распределение выявленных функций и подфункций по уровням. Есть свобода в рамках разработки одного уровня, так как порядок в нем не определен. Но есть зависимость данных нижних уровней от данных более высоких уровней.
Операционный метод (более распространенный)
Подпрограммы разрабатываются в порядке соответственно с их вызовом.
Есть свобода, так как при разных входных данных меняется порядок запросов. Полностью снимается вопрос по поводу зависимости по данным.
Недостатки: диагностические сообщения зависят ото всех подпрограмм;
излишняя сложность подпрограмм, так как в ПС есть основной набор функций – функциональное ядро, которое лучше разрабатывать пораньше.
Восходящая разработка
Также строится схема иерархии, но программирование осуществляется снизу вверх.
Надо писать специальные управляющие программы для проверки того, что уже написали.
Используется редко. Можно использовать, если в системе много общих подпрограмм
Метод расширения ядра
-
Построение схемы иерархии желательно, но не обязательно.
Разработка начинается с основных функций ПС.
На ранних этапах можно показать работу системы, а потом наращивать ее функциональность.
Используется чаще, чем восходящий.
ДОСТОИНСТВА ФОС:
Последовательное выполнение всех этапов разработки>>>
Возможность планирования сроков завершения работ и соответствующих затрат).
НЕДОСТАТКИ ФОС:
Желательно последовательное выполнение этапов разработки, что лишает разработку гибкости;
Взгляд на предметную область как на набор функций часто противоречит ее сущности (в 80% случаев это набор объектов, а не функций);
Слабый учет структуры данных;
Требования к ПС должны быть четко определены в начале разработки;
Работающий прототип - лишь к концу разработки;
Участие заказчиков ограничено;
Желательно наличие опыта подобных разработок у коллектива разработчиков.
Сложность решаемой задачи нарастает к концу разработки.