Лекция на тему: «Основные качественные и экономические категории прикладного программного обеспечения».



Авторы специализируются на тестах по любым дисциплинам! Средний балл по тестам 4,6.
 
Любые вопросы по дистанционному обучению. Тесты, письменные работы, сессия под ключ.
 
Известный интернет сайт, помощь по любым учебным вопросам - от теста до дипломной работы. Личный менеджер.
 
Крупная биржа студенческих работ. Закажи напрямую у преподавателя. Низкие цены, стена заказов.
 
Биржа студенческих работ. Потребуется самостоятельная выгрузка работ.
 

   План

  1. Понятие жизненного цикла программного изделия.
  2. Модели жизненного цикла.
  3. Экономическая эффективность программного изделия.
  4. Показатели качества программных продуктов.
  5. Не распространяемые программы.
  6. Модели стоимости.

 Литеpатуpа

  1. Смирнов А.А. Прикладное программное обеспечение. Учебное пособие. М.:МЭСИ, 2011.
  2. Липаев В.В. Обеспечение качества программных средств. Методы и стандарты. М., «Синтег», 2001
  3. Соммервилл И. Инженерия программного обеспечения, 6-е издание.: Пер. с англ. – М.: Издат. Дом. «Вильямс», 2002. – 624 с.: ил.
  4. ISO 12207: Software Life Cycle Processes. Процессы жизненного цикла программных средств.
  5. ISO/IEC 15288: System Life Cycle Processes.
  6. ISO/IEC TR 15504: Software Process Assessment (Оценка процессов разработки ПО).
  7. ANSI/IEEE. 983-1986. Руководство по обеспечению качества программных средств.
  8. ISO/IEC 9126: Оценка программного продукта. Характеристика качества и руководство по их применению.
  9. http://ru.wikipedia.org
  10. http://www.cs.queensu.ca/Software-Engineering/

1.Понятие жизненного цикла программного изделия.

Под жизненным циклом программного изделия понимается период, в течение которого осуществляется его разработка и использование. Жизненный цикл программного изделия заканчивается в результате морального устаревания, а не физического износа.

Можно выделить следующие этапы жизненного цикла программного изделия:

во-первых, анализ требований;

во-вторых, проектирование;

в-третьих, программирование;

в-четвертых, сопровождение.

В процессе анализа требований производится анализ существующих программных изделий, определяются основные требования к создаваемому программному изделию, и разрабатывается внешняя спецификация. Внешняя спецификация описывает программное изделие с точки зрения пользователя. Во внешней спецификации определяется входная и выходная информация. Однако внешняя спецификация не должна описывать пути конкретной реализации излагаемых требований.

Проектирование программного изделия включает в себя следующие части:

Во-первых, определение оптимальной структуры программы;

Во-вторых, определение особенностей реализации и последовательности разработки конкретных модулей;

В-третьих, выбор языка программирования.

Программирование предполагает преобразование проектных решений в программы, написанные на выбранном языке программирования. Разработанные программы отлаживаются и тестируются. Определяется, в какой мере, разработанные программы удовлетворяют требованиям, сформулированным во внешних спецификациях.

Сопровождение заключается в удовлетворении потребностей пользователя в процессе эксплуатации программного изделия. Сопровождение предусматривает два основных элемента:

во-первых, выполнение модификаций, связанных с расширением или изменением функций прикладной программы;

во-вторых, устранение ошибок, не выявленных в процессе отладки.

Опыт внедрения и использования крупных программных систем показывает, что стоимость эксплуатации и сопровождения в составе TCO (Total Cost Ownership, общая стоимость владения системой) увеличивается с ростом системы опережающими темпами. Затраты на сопровождение в значительной степени зависят от уровня профессиональной реализации предыдущих этапов.

Процессы жизненного цикла программных средств определены в международном стандарте “ISO 12207”(Software Life Cycle Processes, Процессы жизненного цикла программных средств). Дальнейшим развитием стандарта “ISO 12207” являются стандарт “ISO/IEC 15288” (System life cycle processes) и стандарт “ISO/IEC 15504” (Software Process Assessment, Оценка процессов разработки ПО).

В соответствии с классификацией данной в стандарте “ISO/IEC 15504” процессы жизненного цикла подразделены на три группы, в которых вводятся пять категорий процессов:

Первая группа называется «Основные процессы». В первую группу входят две категории.

Во-первых, категория CUS (Потребитель-поставщик). Категория Потребитель-Поставщик состоит из процессов, непосредственно влияющих на потребителя, поддерживающих процесс разработки программного средства и его передачи потребителю, и обеспечивающих возможность корректного использования программного средства или услуги. В данную категорию включены такие процессы, как процесс приобретения (Acquisition process), процесс поставки (Supply process), процесс эксплуатации (Operation process).

Во-вторых, категория ENG (Инженерная). Инженерная категория состоит из процессов, которые непосредственно определяют, реализуют или поддерживают программный продукт, его взаимодействие с системой и документацию на него. В тех случаях, когда система целиком состоит из программных средств, инженерные процессы имеют отношение только к созданию и поддержанию этих программных средств. В инженерную категорию входит процесс разработки (Development process) и процесс сопровождения системы и программных средств (System and software maintenance process). Процесс разработки подразделяется на следующие процессы: процесс анализа требований и разработки системы (System requirements analysis and design process), процесс анализа требований к программным средствам (Software requirements analysis process), процесс проектирования программных средств (Software design process), процесс конструирования программных средств (Software construction process), процесс интеграции программных средств (Software integration process), процесс тестирования программных средств (Software testing process), процесс интеграции и тестирования системы (System integration and testing process).

Вторая группа называется «Вспомогательные процессы». Данная группа включает категорию SUP (Вспомогательная).

Вспомогательная категория состоит из процессов, которыми могут пользоваться любые другие процессы, включая другие вспомогательные процессы, в различные моменты жизненного цикла программных средств. Вспомогательная категория включает такие процессы, как: процесс документирования (Documentation process), процесс управления конфигурацией (Configuration management process), процесс обеспечения качества (Quality assurance process), процесс верификации (Verification process).

Третья группа называется «Организационные процессы». В третью группу входят две категории.

Во-первых, категория MAN (Управленческая). Управленческая категория состоит из процессов, содержащих практики общего характера, которые могут быть использованы каждым, кто управляет любым проектом или процессом в ходе жизненного цикла программных средств. К управленческой категории относятся следующие процессы: процесс административного управления (Management process), процесс управления проектами (Project management process), процесс управления качеством (Quality Management process), процесс управления рисками (Risk Management process).

Во-вторых, категория ORG (Организационная). Организационная категория состоит из процессов, которые создают инфраструктуру организации и используют все лучшее из того, что имеется во всех частях организации. К организационной категории относятся такие процессы, как процесс организационных установок  (Organizational alignment process) и процесс усовершенствования (Improvement process).

2. Модели жизненного цикла.

Под моделью жизненного цикла понимается система, содержащая процессы, действия и задачи, которые осуществляются в ходе разработки, функционирования и сопровождения программного продукта в течение всей жизни программного средства, от определения требований до завершения использования.

Модель жизненного цикла определяет принципы, на основе которых ведется разработка программного средства. Выбор модели жизненного цикла зависит от специфики, масштаба и сложности проекта и специфики условий, в которых система создается и функционирует.

В настоящее время существует несколько моделей жизненного цикла, которые получили достаточно широкое распространение:

Во-первых, каскадная модель жизненного цикла;

Во-вторых, спиральная модель жизненного цикла;

В-третьих, другие типы моделей жизненного цикла,

Каскадная модель жизненного цикла иногда называется водопадной (waterfall) моделью. Данная модель основана на следующих принципах:

Во-первых, строго последовательное выполнение этапов;

Во-вторых, каждый последующий этап начинается лишь тогда, когда полностью завершено выполнение предыдущего этапа;

В-третьих, каждый этап имеет определенные критерии входа и выхода: входные и выходные данные;

В-четвертых, каждый этап полностью документируется;

В-пятых, переход от одного этапа к другому осуществляется посредством формального обзора с участием заказчика;

В-шестых, основой модели являются сформулированные требования, которые меняться не должны;

В-седьмых, критерием качества результата является соответствие продукта установленным требованиям.

Существуют различные варианты выделения этапов жизненного цикла, при создании каскадной модели. В частности, выделяют следующие этапы:

На первом этапе выполняется разработка требований.

На втором этапе выполняется проектирование.

На третьем этапе выполняется реализация.

На четвертом этапе выполняется тестирование.

На пятом этапе осуществляется ввод программного средства в действие.

При выделении указанных этапов каскадная модель может быть представлена следующим образом

mesi-1

Каскадная модель имеет следующие преимущества:

Во-первых, данная модель проста, удобна в применении и понятна заказчикам;

Во-вторых, данная модель позволяет осуществлять контроль менеджмента проекта;

В-третьих, каждую стадию могут выполнять независимые команды;

В-четвертых, каскадная модель позволяет достаточно точно планировать сроки и затраты.

Основным недостатком каскадной модели является то, что внесение изменений в документы, разработанные на ранних стадиях, создает значительные проблемы.

В спиральной модели жизненного цикла разработка прикладной программной системы происходит повторяющимися этапами, которые обозначаются витками спирали. В конце каждого витка получается законченная версия системы, реализующая некоторый набор функций. Затем разработанная версия системы предъявляется пользователю и на следующий виток переносится вся документация, разработанная на предыдущем витке. После этого процесс повторяется.

Графическая иллюстрация спиральной модели имеет следующий вид:

mesi-2

 

Существуют некоторые другие типы моделей жизненного цикла, которые используют отдельные преимущества каскадной и спиральной моделей. Дополнительно можно выделить следующие модели:

Во-первых, V-образная модель жизненного цикла. V-образная модель жизненного цикла, содержит процессы двух видов: прежде всего, основные процессы разработки, аналогичные процессам каскадной модели, и, кроме того процессы верификации, представляющие собой цепь обратной связи по отношению к основным процессам.

Во-вторых, итерационная модель жизненного цикла. Данная модель является развитием классической каскадной модели. В отличие от каскадной модели,  итерационная модель предполагает возможность возвратов на ранее выполненные этапы. При этом, причинами возвратов в итерационной модели являются выявленные ошибки, устранение которых требует возврата на предыдущие этапы.

В-третьих, инкрементная (пошаговая) модель. Инкрементная разработка представляет собой процесс поэтапной реализации всей системы и поэтапного наращивания (приращения) функциональных возможностей. На первом шаге необходим полный заранее сформулированный набор требований, которые делятся по некоторому признаку на части. Далее выбирается первая группа требований и выполняется полный проход по каскадной модели. После того, как первый вариант системы, выполняющий первую группу требований, сдан заказчику, разработчики переходят к следующему шагу (второму инкременту) по разработке варианта, выполняющего вторую группу требований.

В-четвертых, модель быстрой разработки приложений RAD (Rapid Application Development). Характерной чертой данной модели является короткое время перехода от определения требований до создания полной системы. Скорость выполнения проекта обеспечивается планированием разработки прототипов и участием заказчика в процессе разработки. Разработчик проекта демонстрирует очередной прототип, пользователь оценивает его функционирование, совместно определяются проблемы и пути их преодоления  для перехода к следующему прототипу. Этот процесс продолжается до тех пор, пока пользователь не согласится, что очередной вариант модели в точности отображает все требования.

В-пятых, модель экстремального программирования. Экстремальное программирование Extreme Programming является примером так называемого метода «живой» разработки (Agile Development Method).  Данная модель жизненного цикла является итерационно-инкрементной моделью быстрого создания (и модификации)  прототипов продукта, удовлетворяющих очередному требованию.