
- •Этапы развития технологии программирования
- •1). «Стихийное» программирование (до середины 60х гг.).
- •2). «Структурный» подход к программированию (60е – 70е гг.).
- •3). Объектный подход (середина 80-х – конец 90х гг.).
- •Компонентный подход к программированию и case-технологии.
- •Платформа .Net
- •Проблемы разработки сложных программных систем
- •Блочно-иерархический подход к созданию сложных систем
- •Жизненный цикл и этапы разработки программного обеспечения
- •Модели жизненного цикла программного обеспечения
- •Модели с промежуточным контролем.
- •Понятия эффективности и технологичности программного обеспечения.
- •Модули и их свойства (сцепление модулей).
- •Модули и их свойства (связность модулей)
- •Нисходящая и восходящая разработка программного обеспечения
- •Структурное программирование.
- •Линейный, 2)разветвляющий, 3) цикличный.
- •Средства описания структурных алгоритмов (псевдокоды, блок-схемы алгоритмов, Flow-формы, диаграммы Насси-Шнейдермана).
- •Правила оформления программ
- •Этап постановки задачи. Классификация программных продуктов по функциональному признаку.
- •Этап постановки задачи. Основные эксплуатационные требования к программным продуктам.
- •Этап постановки задачи. Предпроектные исследования предметной области.
- •Разработка технического задания.
- •Принципиальные решения начальных этапов проектирования (выбор архитектуры программного обеспечения, выбор пользовательского интерфейса, выбор языка программирования и т.Д.).
- •2) Выбор типа пользовательского интерфейса.
- •3) Выбор подхода к разработке.
- •4) Выбор языка программирования.
- •Классификация моделей разрабатываемого программного обеспечения
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Диаграммы переходов состояний.
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Функциональные диаграммы.
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Диаграммы потоков данных.
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Структуры данных и диаграммы отношений компонентов данных.
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Сетевая модель данных (Диаграммы «сущность-связь»)
- •Модели разрабатываемого по, используемые на этапе анализа технического задания. Структурный подход. Математические модели.
- •Проектирование программного обеспечения при структурном подходе. Структурная и функциональная схемы.
- •Метод пошаговой детализации при проектировании структуры по
- •Структурный подход. Структурные карты Константайна
- •Проектирование программного обеспечения при структурном подходе. Проектирование структур данных
- •Модель использования. Определение вариантов использования. Диаграммы вариантов использования.
- •Построение диаграммы классов на этапе анализа технического задания.
- •Диаграмма последовательностей системы.
- •Построение диаграммы деятельности на этапе анализа технического задания.
- •Проектирование по при объектном подходе.
- •Диаграмма пакетов.
- •Диаграмма классов этапа проектирования. Уточнение отношений между классами на этапе проектирования.
- •Диаграммы последовательностей этапа проектирования.
- •Диаграммы состояний объекта
- •Диаграмма деятельности на этапе проектирования.
- •Диаграмма компонентов
- •Диаграмма размещения
- •Тестирование программных продуктов.
- •Структурное тестирование.
- •Функциональное тестирование.
- •Восходящее и нисходящее тестирование
- •Классификация ошибок
- •Методы отладки программного обеспечения
Технология программирования. Основные понятия.
ТП – это совокупность методов и средств, используемых в процессе разработки ПО.ТП представляет собой набор технологических инструкций, включающих:
Указания последовательности выполняемых технологических операций;
Перечень условий, при которых выполняется та или иная операция;
Описание самих операций, где для каждой операции определены исходные данные, результаты, инструкции, нормативы, стандарты, критерии, методы оценки.
Рис.1.1. Структура описания технологических операций.
Кроме набора операций, их последовательности технология также определяет способ описания проектируемой системы (модели, используемые на конкретном этапе разработки). Различают технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов, и технологии, охватывающие несколько этапов или весь процесс разработки. В основе первых обычно лежит ограниченно применяемый метод, в основе вторых – базовый метод, или подход, определяющий совокупность методов на разных этапах разработки, или методологию.
Этапы развития технологии программирования
1). «Стихийное» программирование (до середины 60х гг.).
О
тсутствовала
сформулированная технология,
программирование было искусством.
Программы имели простейшую структуру
(программы на машинном языке и
обрабатываемые ими данные).
<<Рис.1.2. Структура простейших программ.
П
оявление
Ассемблера. Создание языков программирования
высокого уровня. Революционным стало
появление в языках средств, позволяющих
работать с подпрограммами. В связи с
чем были созданы библиотеки.
Типичная программа того времени состояла из основной программы, области глобальных данных и набора подпрограмм.
Р
ис.
1.3. Структура программ с глобальной
областью данных.>>
Б
ыло
предложено в подпрограмме размещать
локальные данные.
<<Рис. 1.4. Структура программ, использующих локальные данные.
Сложность разрабатываемого ПО по-прежнему ограничивалась возможностью программиста отслеживать процесс обработки данных, но на другом уровне. Появление средств поддержки программ позволило разрабатывать ПО параллельно несколькими программистами.
В начале 60х гг. возник «кризис программирования»: фирмы, разрабатывающие сложные ПО, срывали сроки завершения проектов. Проект устаревал раньше, чем был готов к внедрению. Увеличилась стоимость и т.д..
Объективно это было вызвано несовершенством технологии программирования:
Стихийно использовалась разработка восходящего подхода и т. Д.
Процесс тестирования и отладки программ занимал более 80% времени разработки.
2). «Структурный» подход к программированию (60е – 70е гг.).
Совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки ПО. В его основе лежит декомпозиция сложных систем. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ стал называться процедурной декомпозицией.
В отличие от процедурного подхода к декомпозиции, структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось сверху вниз и подразумевало реализацию общей идеи, обеспечивая проработки интерфейсов подпрограмм. Одновременно вводились ограничения на конструкцию алгоритмов, рекомендовались формальные модели и их описание и специальный метод проектирования алгоритмов – метод пошаговой декомпозиции. Поддержка принципов «структурного» программирования была заложена в основу процедурных языков программирования. Обычно они включали «структурные» операторы передачи управления, поддерживали вложенность подпрограмм, локализацию и ограничения области видимости данных. Дальнейший рост сложности и размеров разрабатываемого ПО потребовал развития структурирования данных, т.е. в языках программирования появилась возможность определения последовательных типов данных. Усилилось стремление разграничивать доступ к глобальным данным программы. В результате появилась технология модульного программирования.
Модульное программирование предполагает выделение группы программ, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки). Связи между модулями осуществляется через специальный интерфейс, а доступ к реализации модуля (телам подпрограмм и некоторым внутренним переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal, C, Ada.
1
…n1
– подпрограммы с локальными данными.
<<Рис. 1.5. Структура программ, состоящих из модулей.
Использование модульного программирования упростило разработку ПО несколькими программистами: каждый мог разрабатывать свои модули независимо, обеспечивая взаимодействие модулей через межмодульный интерфейс. Также модули без изменений могли быть использованы в других разработках.
Буг: «Структурный» подход в сочетании с модульным программированием позволил получать достаточно надежные программы размером <= 100000 операторов». Недостатки модульного программирования: ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы. При увеличении размера программы вырастает сложность межмодульных интерфейсов и с некоторого момента предусмотреть взаимодействие отдельных частей программы становится практически невозможно. Для разработки ПО большого объема было предложено использовать объектный подход.