Жизненным циклом программы (ЖЦП) на отрезок времени от принятия решения о необходимости разработки программы до снятия программы с эксплуатации. ЖЦП делится на фазы разработки и использования. Первой фазе соответствует разработка документации, а второй сопровождение. Под сопровождением понимают два вида работ:
1. Модификация программы за счет изменения модели предметной области.
2. Нахождение и исправление ошибок, которые есть в программе. В свою очередь фаза разработки делится на 4 под фазы:
1. Анализ задачи.
Каждый период заканчивается своей документацией.
1. Техническое задание.
2. Эскизный, технический проекты, пояснительная записка.
3. Распечатка программы и статическое тестирование.
4. Сборка программы, программа тестирования, результаты
Разработка ПО может вестись с использованием лавинообразной (Схема 2) или итеративной (Схема 3) моделей разработки. Лавинообразная модель (модель «водопада») может быть использована для разработки ПО небольшого размера с хорошо определенной алгоритмической базой.
О важности технологии разработки
Итеративный подход в разработке программного обеспечения — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы. Проект при этом подходе в каждой фазе развития проходит повторяющийся цикл:
Схема 2- Итеративная
Преимущества итеративного подхода:
· снижение воздействия серьёзных рисков на ранних стадиях проекта, что ведет к минимизации затрат на их устранение;
· организация эффективной обратной связи проектной команды с потребителем (а также заказчиками, стейкхолдерами) и создание продукта, реально отвечающего его потребностям;
· акцент усилий на наиболее важные и критичные направления проекта;
· непрерывное итеративное тестирование, позволяющее оценить успешность всего проекта в целом;
· раннее обнаружение конфликтов между требованиями, моделями и реализацией проекта;
· более равномерная загрузка участников проекта;
· эффективное использование накопленного опыта;
· реальная оценка текущего состояния проекта и, как следствие, большая уверенность заказчиков и непосредственных участников в его успешном завершении.
Методология и технология разработки ПП
Методология — это система принципов и способов организации и построения теоретической и практической деятельности, а также учение об этой системе. Самой важной целью методологии программирования является изучение и внедрение таких методов проектирования программ, которые облегчают задачу сопровождения программ. Легкость сопровождения — это такое качество программы, которое нельзя улучшить после ее разработки никакими другими способами, кроме перепрограммирования.
Методология реализуется в методах. Под методом понимают совокупность приемов и операций практического и теоретического освоения деятельности. В программировании широкую известность приобрели методы: структурного, функционального, модульного, объектно-ориентированного программирования. Технология — это совокупность методов обработки, изготовления, изменения состояния, свойств, формы сырья, материала или полуфабриката в процессе производства, а также научное описание способов производства.
Технология разработки ПО (лекция 1)
Применительно к программированию технологию можно определить, как совокупность процессов создания, сопровождения и применения программного продукта. Любая технология программирования базируется на некоторой методологии разработки программ.
Любая теоретическая или практическая сфера деятельности использует присущие только ей способы решения поставленных задач. Эти способы называются методами. Метод — это способ достижения какой-либо цели, решения конкретной задачи; совокупность приемов или операций практического или теоретического освоения действительности.
Методология — совокупность методов, применяемых в какой-либо области человеческой деятельности.
В дальнейшем будем понимать методологию как совокупность методов, применяемых в жизненном цикле и объединенных общим философским подходом.
Методология науки дает характеристику компонентов научного исследования — его объекта, предмета анализа, задачи исследования, совокупности исследовательских средств, необходимых для решения задачи данного типа, а также формирует представление о последовательности движения исследователя в процессе решения задачи. Методология создания информационных систем заключается в организации процесса построения информационной системы и обеспечении управления этим процессом для того, чтобы гарантировать выполнение требований как к самой системе, так и к характеристикам процесса разработки.
При разработке или приобретении программных продуктов встает проблема формулирования бизнес-требований, предъявляемых к программному продукту или услуге. В значительной степени ошибки проектирования обусловлены неточным выражением этих требований. Разработка программного обеспечения — Software Development Process рассматривается как проектная деятельность, предполагающая дискретность выполнения отдельных шагов (итераций), использование различного вида ресурсов (трудовых, материальных, финансовых, информационных). Проект по созданию программного продукта обладает рядом характеристик, которые влияют на выбор методологии и инструментальных средств разработки.
Сформировалось три стратегии разработки программных продуктов:
1) линейная последовательность этапов разработки, предполагающая однократный проход этапов процесса разработки; поддерживается «водопадной» моделью жизненного цикла программного продукта;
2) инкрементная стратегия, когда определенные в полном объеме бизнес-требования к программному продукту реализуются постепенно, в виде последовательности версий, расширяющих функциональность программного продукта;
3) эволюционная стратегия, когда в начале требования определяются в неполном объеме, но уточняются в ходе разработки версий программного продукта. Линейная последовательность этапов разработки имеет несколько вариантов. Модель водопада (Waterfall Model) — наиболее «старая» модель процесса разработки программного обеспечения.
Процесс разработки представляется как последовательность (поток) этапов, фаз (анализа требований, проектирования, реализации, тестирования, интеграции и поддержки). Разработчик переходит от одной стадии к другой строго последовательно, после полного и успешного завершения предыдущей фазы; переходов назад либо вперед или перекрытия фаз не происходит.
Системный анализ определяет роль каждого элемента в компьютерной системе, взаимодействие элементов друг с другом. Анализ начинается с определения требований и назначения подмножества этих требований программному элементу.
Среди основных решаемых задач планирования проекта программного обеспечения выделяют: объем, сроки и трудозатраты проектных работ, бюджет проекта, состав исполнителей, план-график работ. В процессе анализа требований уточняются функции и характеристики программного средства, требования к пользовательскому и программному интерфейсам.
Проектирование программного продукта включает в себя разработку архитектуры построения, состава и назначения модулей, алгоритмов и структуры данных, интерфейсов. Кодирование обеспечивает реализацию проектных решений в выбранной среде программирования. Тестирование — обязательный этап для выявления дефектов программного продукта.
Сопровождение — поддержка работоспособности программного продукта у заказчика, внесение изменений в эксплуатируемый программный продукт. Каждая стадия (этап) завершается выпуском полного комплекта документации. Эта модель обладает как достоинствами, так и недостатками. Основная проблема — нарастание риска проекта из-за накапливания ошибок ранних стадий проекта, что не позволяет эффективно выявлять и нивелировать последствия подобных рисков.
Рисунок 1. Этапы разработки ПО для водопадной модели
Модифицированные модели водопада — Agile Software Development, гибкая или «живая» методология разработки, нацелена на минимизацию рисков путем сведения разработки к серии коротких циклов, называемых итерациями, длительностью не более двух недель. Каждая итерация обеспечивает прохождение всех фаз проекта, обеспечивая инкремент (прирост) функциональности.
Однако итерация, как правило, недостаточна для выпуска новой версии продукта. По окончании итерации команда разработчиков оценивает и выбирает приоритеты разработки. Основной метрикой данной методологии становится рабочий продукт, а не система письменной документации. Далее была создана модель RAD — Rapid Application Development (быстрая разработка приложений), которая стала основой технологий создания и развертывания программных продуктов. Эта модель предусматривает:
· инструментальную поддержку процесса разработки, минимизацию времени и трудозатрат;
· использование прототипа для уточнения требований заказчика;
· цикличность разработки — каждая новая версия продукта основывается на оценке результата работы предыдущей версии заказчиком;
· постепенное расширение функциональности;
· распределение ролей в команде разработчика, возможность их совмещения;
· управление проектом создания программного продукта.
Модель RAD может принимать одну из трех форм: макет (в виде чертежа формы документа, схемы диалога), работающий макет для ограниченного набора функций или типовой программный продукт, подлежащий настройке. Макетирование основывается на многократном повторении итераций, в которых участвуют заказчик и разработчик, и начинается со сбора и уточнения требований к создаваемому программному продукту.
Инкрементная модель объединяет элементы последовательной водопадной модели с итерационной основой макетирования.
Рисунок 2. Схема выполнения проектных работ по модели RAD
Она реализована как серия поставок (инкрементов, релизов), представляющих собой последовательность фаз анализа, проектирования, кодирования и тестирования. Разработка первого инкремента позволяет получить базовый продукт, реализующий базовые требования, при этом многие вспомогательные требования остаются нереализованными. План следующих инкрементов предусматривает последовательную модификацию базового продукта, обеспечивающую дополнительные характеристики и функциональность. По своей природе инкрементный процесс итеративен, но, в отличие от макетирования, инкрементная модель обеспечивает в конце инкрементной итерации работающий продукт. Современная реализация инкрементного подхода — экстремальное программирование (ХР), которое ориентировано на очень малые приращения функциональности.
Эволюционная стратегия получила свое воплощение в ряде моделей: спиральной, компонентно-ориентированной. Автором спиральной модели является американский ученый Б. Боэм (1988).
Спиральная модель объединила свойства классического жизненного цикла и макетирования, но дополнила их анализом риска. Эта модель включает в себя четыре обязательные фазы:
1) планирование — определение целей, вариантов, ограничений;
2) анализ риска — анализ вариантов и распознавание (выбор) риска;
3) конструирование — разработка продукта следующего уровня;
4) оценивание — оценка заказчиком текущих результатов разработки.
Очередной цикл по спирали выполняется в направлении от центра к периферии, постепенно создаются полные версии программного продукта. Решения принимаются на актуальной информации о состоянии разработки. К достоинствам спиральной модели относят: эволюционное развитие разработки программного продукта, учет рисков на каждом витке спирали, использование методов моделирования для анализа рисков.
Спиральная модель ориентирована на большие, дорогостоящие и сложные проекты. При этом требуется:
1. Постоянное взаимодействие с потенциальными пользователями, выяснение изменяющихся требований к программной системе.
2. Разработка архитектуры системы, определяющей концепцию построения программного продукта, открытой для изменений.
3. Наличие разработчиков высокой квалификации, инструментария разработки, соответствующего масштабу и сложности программного продукта.
Рисунок 3. Схема выполнения проектных работ по спиральной модели: 1 — планирование проекта и жизненного цикла; 2 — концепция эксплуатации; 3 — спецификация требований; 4 — проверка требований; 5 — детальный дизайн; 6 — кодирование; 7 — модульное тестирование; 8 — интеграция и тестирование; 9 — приемочное тестирование; 10 — развертывание.
Компонентно-ориентированная модель — дальнейшее развитие спиральной модели, основанное на эволюционной стратегии разработки программных продуктов. Новая разработка должна основываться на повторном использовании существующих программных компонентов. Это приводит к уменьшению времени разработки и снижению стоимости программного продукта, а также росту производительности труда разработчиков.
Источник: studentopedia.ru
Технология разработки программного обеспечения, Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д., 2008
Технология разработки программного обеспечения, Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д., 2008.
Рассматриваются основные понятия и определения, классификация программного обеспечения, этапы создания программного продукта в рамках жизненного цикла, освещается современное состояние технологий разработки программных продуктов. Изложены существующие подходы к оценке качества процессов создания программного обеспечения, произведен анализ требований и определение спецификаций программного обеспечения. Большое внимание уделено вопросам проектирования ПО, его надежности, коллективной разработки с помощью современных систем контроля версий.
Теоретический материал сопровождается практикумом в виде лабораторных работ по изложенной тематике.
Предназначено для студентов и преподавателей высших учебных заведений технического профиля, а также для специалистов любой предметной области, проявивших интерес к современному состоянию методов и средств программирования.
Инструментарий технологии программирования.
Средства для создания приложений — совокупность языков и систем программирования, инструментальные среды пользователя, а также различные программные компоненты для отладки и поддержки создаваемых программ.
Язык программирования — это формализованный язык для описания алгоритма решения задач на компьютере. Языки программирования можно условно разделить на следующие классы:
• машинные языки — это языки, воспринимаемые аппаратной частью компьютера (машинные коды);
• машинно-ориентированные языки, отражающие структуру конкретного типа компьютера (ассемблер);
• процедурно-ориентированные языки — это языки, в которых имеется возможность описания программы как совокупности процедур, или подпрограмм (Си, Паскаль и др.);
• проблемно-ориентированные языки, предназначенные для решения задач определенного класса (ЛИСП, ПРОЛОГ).
Другой классификацией языков является их деление на языки, ориентированные на реализацию основ структурного программирования, основанного на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей, и объектно-ориентированные языки, поддерживающие понятие объектов, их свойств и методов обработки.
Содержание.
Введение.
Глава 1. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
1.1. Технология программирования в историческом аспекте.
1.2. Основные понятия и определения.
1.3. Классификация программного обеспечения.
1.3.1. Системное программное обеспечение.
1.3.2. Инструментарий технологии программирования.
1.3.3. Пакеты прикладных программ.
Глава 2. ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ И ПОДХОДЫ.
2.1. Особенности создания программного продукта.
2.1.1. Принципы работы с требованиями к программному обеспечению. Проблематика проектирования.
2.1.2. Оценка стоимости ошибок.
2.1.3. Управление требованиями.
2.1.4. Последовательность работы с требованиями. Анализ проблемы.
2.1.5. Преграды на пути выявления требований.
2.2. Оценка качества процессов создания программного обеспечения.
2.2.1. Серия стандартов ISO 9000.
2.2.2. СММ.
2.2.3. Процесс сертификации программ на базе информации об их использовании.
2.3. Жизненный цикл программы.
2.3.1. Понятие технологии разработки программы.
2.3.2. Основа разработки программного обеспечения.
2.3.3. Модели жизненного цикла.
2.3.4. Rational Objectory Process — модель жизненного цикла (методология объектно-ориентированного программирования).
2.3.5. Жизненный цикл UML (Rational Objectory Process).
2.3.6. Специфицирование и планирование.
2.3.7. Процесс разработки.
2.3.8. Выпуск продукта и механизмы обратной связи.
Глава 3. АНАЛИЗ ТРЕБОВАНИЙ И ОПРЕДЕЛЕНИЕ СПЕЦИФИКАЦИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
3.1. Определение требований к программным продуктам.
3.1.1. Функциональные требования.
3.1.2. Эксплуатационные требования.
3.2. Выбор архитектуры программного обеспечения.
3.3. Структура и формат данных. Статические, полустатические и динамические структуры.
3.3.1. Классификация структур данных.
3.3.2. Простые структуры данных.
3.3.3. Статические структуры данных.
3.3.4. Полустатические структуры данных.
3.3.5. Динамические структуры данных.
3.4. Модульное программирование.
3.4.1. Понятие модуля.
3.4.2. Основные характеристики программного модуля.
3.4.3. Модульная структура программных продуктов.
3.4.4. Методы разработки при модульном программировании.
3.5. Анализ требований и определение спецификаций при структурном подходе.
3.5.1. Спецификации процессов.
3.5.2. Словарь терминов.
3.5.3. Диаграммы переходов состояний (SDT).
3.5.4. Функциональные диаграммы.
3.5.5. Диаграммы потоков данных (DFD).
3.5.6. Диаграммы сущность—связь.
3.6. Анализ требований и определение спецификаций при объектном подходе.
3.6.1. Некоторые теоретические сведения о UML — унифицированном языке моделирования.
3.6.2. Определение прецедентов (вариантов использования).
3.6.3. Построение концептуальной модели предметной области.
3.6.4. Описание поведения системы. Диаграммы последовательностей, деятельности и состояний.
Глава 4. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
4.1. Проектирование программного обеспечения при структурном подходе.
4.1.1. Структурная схема разрабатываемого программного обеспечения.
4.1.2. Функциональная схема.
4.1.3. Метод пошаговой детализации при составлении алгоритмов.
4.1.4. Структурные карты Константайна.
4.1.5. Структурные карты Джексона.
4.1.6. CASE-технологии.
4.1.7. Ускорение разработки программного обеспечения. Методология RAD.
4.2. Проектирование программного обеспечения при объектном подходе.
4.2.1. Разработка структуры программного обеспечения при объектном подходе.
4.2.2. Диаграммы кооперации.
4.3. Экстремальное программирование.
4.3.1. Основополагающие практики ХР.
4.3.2. Преимущества простого дизайна.
4.3.3. Простой дизайн.
4.3.4. Рефакторинг и принцип YAGNI.
4.3.5. Наращивание архитектуры.
4.3.6. UML и ХР.
4.3.7. Суть проектирования. Программирование и тестирование.
Глава 5. ТЕСТИРОВАНИЕ И ОТЛАДКА ПРОГРАММ.
5.1. Термины и определения.
5.2. Тестирование «белого ящика» и «черного ящика».
5.3. Порядок разработки тестов.
5.4. Автоматизация тестирования.
5.5. Модульное тестирование.
5.6. Интеграционное тестирование.
5.7. Системное тестирование.
5.8. Эффективность и оптимизация программ.
5.9. Стиль программирования.
5.9.1. Основные принципы форматирования.
5.9.2. Способы форматирования.
5.10. Надежность программного обеспечения.
5.10.1. Количественные характеристики надежности программ.
5.10.2. Методы оценки и измерения характеристик надежности.
5.10.3. Преимущества парного программирования.
5.11. Отладка программ.
Глава 6. СОПРОВОЖДЕНИЕ ПРОГРАММ.
6.1. Виды программных документов.
6.2. Пояснительная записка.
6.3. Руководство пользователя.
6.4. Руководство системного программиста.
Глава 7. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
7.1. Инструментальные средства разработки программ.
7.1.2. Выбор языка программирования.
7.1.3. Выбор среды программирования.
7.2. Технологии программирования.
7.2.1. Объектно-ориентированное программирование.
7.2.2. Платформа JAVA и .NET.
7.3. Защита программных продуктов.
7.3.1. Основные сведения о защите программных продуктов.
7.3.2. Криптографические методы защиты информации.
7.3.3. Программные системы защиты от несанкционированного копирования.
7.3.4. Правовые методы защиты программных продуктов и баз данных.
Глава 8. КОЛЛЕКТИВНАЯ РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
8.1. Пакеты прикладных программ.
8.1.1. Система контроля версий Microsoft Visual SourceSafe.
8.1.2. Система контроля версий Subversion.
Глава 9. ЭКОНОМИЧЕСКИЕ АСПЕКТЫ РАЗРАБОТКИ И ИСПОЛЬЗОВАНИЯ ПРОГРАММНЫХ ПРОДУКТОВ.
9.1. Оценка стоимости разработки программного обеспечения.
9.1.1. Линейный метод.
9.1.2. Метод функциональных точек.
9.1.3. Оценка с использованием эмпирических данных.
9.2. Методы оценки эффективности ПО на этапе эксплуатации.
ЛАБОРАТОРНЫЙ ПРАКТИКУМ.
Лабораторная работа № 1. Этапы разработки программного обеспечения при структурном подходе к программированию. Стадия «Техническое задание».
Лабораторная работа № 2. Структурный подход к программированию. Стадия «Эскизный проект».
Лабораторная работа № 3. Структурный подход к программированию. Стадия «Технический проект».
Лабораторная работа № 4. Этапы разработки программного обеспечения. Стадия «Реализация».
Лабораторная работа № 5. Тестирование программ методами «белого ящика».
Лабораторная работа № 6. Использование технологий OLE, СОМ и ActiveX.
Лабораторная работа № 7. Создание сетевых приложений на Delphi с использованием Windows Sockets API.
Лабораторная работа № 8. Проектирование программной системы при объектном подходе к программированию.
Лабораторная работа № 9. Динамические структуры данных.
Лабораторная работа № 10. Объектно-ориентированное программирование (ООП).
ПРИЛОЖЕНИЯ.
Приложение 1. Варианты заданий.
Приложение 2. Пример разработки технического задания на программный продукт.
Приложение 3. Пример технического задания на разработку.
Приложение 4. Пример эскизного проекта.
Приложение 5. Листинги программ к лабораторной работе №6.
Литература.
Предметный указатель.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Технология разработки программного обеспечения, Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д., 2008 — fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Источник: obuchalka.org
Технология разработки программных продуктов
Основные понятия и определения, классификация программ, особенности создания программного продукта, жизненный цикл программы; проектирование программных продуктов; структура и формат, статические и динамические данные; модульное программирование; стиль программирования, эффективность и оптимизация программ; отладка, тестирование, сопровождение программ; инструментальные средства разработки программ; технологии программирования; защита программ; пакеты прикладных программ; коллективная разработка программных средств; экономические аспекты создания и использования программных средств.
Архангельский государственный технический университет
Источник: narfu.ru