- •230100.62 (09.03.01) «Информатика и вычислительная техника» профиля подготовки «Программное обеспечение вычислительной техники и
- •231000.62 (09.03.04) «Программная инженерия» профиля подготовки «Разработка программно-информационных систем»
- •1) 230100.62 (09.03.01) «Информатика и вычислительная техника»:
- •2) 231000.62 (09.03.04) «Программная инженерия»:
- •Лекция №1. Основные понятия и определения
- •Лекция №2. Прикладной системный анализ при разработке по. Принципы структурного анализа. Процедура требований.
- •2.1 Проблема сложности ис
- •2.2 Основные понятия структурного анализа
- •2.3 Принципы структурного анализа
- •2.4 Группы средств структурного анализа и их взаимоотношения
- •2.5 Краткий список структурных методологий по группам средств моделирования
- •Лекция №3. Моделирование функций по. Нотация idef0. Case-средство bpWin
- •3.1 Диаграммы idef0
- •3.2 Виды связей в idef0
- •3.3 Диаграмма дерева узлов
- •3.4 Case-средство bpWin
- •Лекция №4. Описание динамики системы. Нотация idef3
- •4.1 Основные символы idef3
- •4.2 Виды связей в idef3
- •4.3 Пример диаграммы idef3
- •Лекция №5. Постановка требований к данным. Словари данных. Моделирование данных в нотации idef1x. Case-средство erWin
- •5.1 Словарь данных
- •5.2 Определение структуры данных для информационных потоков
- •5.3 Моделирование данных в нотации idef1x
- •5.3.1 Базовые понятия erd
- •5.3.2 Виды сущностей в idef1x
- •5.3.3 Виды связей в idef1x
- •Лекция №6. Стандарт онтологического исследования idef5
- •6.1 Основные принципы онтологического анализа
- •6.2 Концепции idef5
- •6.3 Язык описания онтологий в idef5
- •6.4 Виды схем и диаграмм idef5
- •Лекция №7. Постановка требований к интерфейсу по. Понятие Usability.
- •7.1 Эргономические цели и показатели качества программного продукта
- •7.2 Проблемы, возникающие на этапе разработки прототипа gui и варианты их решения
- •7.3 Принципы реализации пользовательского интерфейса
- •Лекция №8. Управление требованиями к программному продукту. Case-средство Requisite Pro.
- •8.1 Нормативная основа
- •8.2 Основные положения
- •8.2.1 Цели управления требованиями
- •8.2.2 Участники управления требованиями
- •8.2.3 Политика в области управления требованиями
- •8.3 Обеспечение процессов управления требований
- •8.3.1 Распределение ответственности
- •8.4 Действия по управлению требованиями
- •8.4.1 Анализ требований
- •8.4.2 Разработка материалов проекта на основе требований
- •8.4.3 Контроль изменений требований
- •8.5 Измерения
- •8.6.2 Контроль со стороны руководителя проекта
- •8.6.3 Контроль со стороны гок
- •8.7 Стандарт оформления требований
- •8.7.1 Шаблон для разработки требований
- •8.7.2 Правила оформления требований
- •8.7.3 Структурирование требований
- •8.8 Показатели качества требований
- •8.9 Начало работы с RequisitePro
- •Лекция №9. Тестирование приложений. Функциональное тестирование, нагрузочное тестирование. Case-средства Rational Functional Tester, Rational Performance Tester.
- •9.1 Дестабилизирующие факторы и методы обеспечения высокого качества функционирования по
- •9.2 Использование среды автоматизированного тестирования Platinum testBytes
- •9.3 Методы обеспечения качества и надежности программных средств
- •9.4 Использование case для повышения качества по
- •9.5 Влияние стандартов открытых систем на качество по
- •9.6 Повышение качества по путем тестирования
- •9.6.1 Основные особенности процесса тестирования по
- •9.6.2 Организационные особенности тестирования
- •9.6.3 Сертификация по
- •9.6.4 Организация и планирование тестирования для обеспечения качества по
- •9.7 Важнейшие разделы iso 9003
- •Документирование системы качества
- •Корректирующие действия
- •Лекция №10. Стандарты, регламентирующие разработку по
- •10.1 Стандарт iso 12207:1995
- •10.3 Серия стандартов гост 34-ххх «Информационная технология»
- •Заключение
- •Библиографический список
- •Приложения Приложение а. Перечень ключевых слов
- •660049, Г. Красноярск, пр. Мира, 82
1) 230100.62 (09.03.01) «Информатика и вычислительная техника»:
разрабатывать интерфейсы «человек – электронно-вычислительная машина» (ПК-3);
разрабатывать модели компонентов информационных систем, включая модели баз данных (ПК-4);
разрабатывать компоненты программных комплексов и баз данных, использовать современные инструментальные средства и технологии программирования (ПК-5);
обосновыввать применяемые проектные решения, осуществлять постановку и выполнять эксперименты по проверке их корректности и эффективности (ПК-6).
2) 231000.62 (09.03.04) «Программная инженерия»:
уменеие применять основы информатики и программирования к проектированию, конструированию и тестированию программных продуктов (ПК-10);
навыки чтения, понимания и выделения главной идеи прочитанного исходного кода, документации (ПК-11);
навыки моделирования, анализа и использования формальных методов конструирования программного обеспечения (ПК-12);
способность оценивать временную и емкостную сложность программного обеспечения (ПК-13);
способность создавать программные интерфейсы (ПК-14);
понимание основных концепций и моделей эволюции и сопровождения программного обеспечения (ПК-26);
понимание особенностей эволюционной деятельности, как с технической точки зрения, так и с точки зрения бизнеса (работа с унаследованными системами, возвратное проектирование, реинженеринг, миграцию и рефакторинг) (ПК-27).
Курс «Технология разработки ПО» связан с другими дисциплинами следующим образом.
Курс является заключительным в цикле подготовки по разработке программного обеспечения и опирается на следующие дисциплины: «Объектно-ориентированное проектирование» «Информатика и программирование», «Структуры и алгоритмы обработки данных», «Базы данных», «Операционные системы».
Данный курс призван выработать представление о целостном процессе создания и использования программного обеспечения как инженерной системы. Программное средство должно создаваться на базе тщательно проанализированных, сформулированных и обоснованных требований, определяться вначале замыслом, суммой документов или эскизом. Разработку ПО следует рассматривать как технологический процесс создания программного изделия, а само программное изделие – как технологический объект. Концепция программной системы как изделия предполагает, что процессы ее проектирования и изготовления аналогичны процессам, связанным с созданием любого другого изделия.
Начнем знакомиться с данным курсом с основных понятий.
Лекция №1. Основные понятия и определения
План лекции
Программа, программная система. Программный продукт. Программная систем как технологический объект.
Концепция программной системы (ПС) как изделия, имеющего самостоятельное значение, процессы проектирования и изготовления которого аналогичны процессам, связанным с созданием любых других изделий.
Понятие жизненного цикла программных систем.
Модели жизненного цикла программных систем: поэтапная, каскадная, спиральная и др.
Матрица фазы-функции. Возможности формализации и автоматизации отдельных стадий и этапов жизненного цикла.
Традиционно начнем с определения некоторых ключевых понятий. Стоит отметить, что многие из базовых терминов имеют множество определений, поэтому постараемся выбрать наиболее распространенные и находящиеся максимально близко к контексту задачи.
Бизнес-модель – это описание предприятия как сложной системы с заданной точностью. В рамках бизнес-модели отображаются все объекты (сущности), процессы, правила выполнения операций, существующая стратегия развития, а также критерии оценки эффективности функционирования системы. Форма представления бизнес-модели и уровень ее детализации определяются целями моделирования и принятой точкой зрения [16].
Информационная модель – подмножество бизнес-модели, описывающее все существующие (в т.ч. не формализованные в документальном виде) информационные потоки на предприятии, правила обработки и алгоритмы маршрутизации всех элементов информационного поля [18].
Информационная система (ИС) – это вся инфраструктура предприятия, задействованная в процессе управления всеми информационно-документальными потоками.
Технология при переводе с греческого означает искусство, мастерство, умение, а это ни что иное, как процессы. Под процессом следует понимать определенную совокупность действий, направленных на достижение поставленной цели. Процесс должен определяться выбранной человеком стратегией и реализоваться с помощью совокупности различных средств и методов.
Информационная технология – процесс, использующий совокупность средств и методов сбора, обработки и передачи данных (первичной информации) для получения информации нового качества о состоянии объекта, процесса или явления (информационного продукта).
Существуют различные определения технологии разработки ПО. Ниже приведены наиболее распространенные из них.
Технология разработки программного обеспечения – это совокупность процессов и методов создания программного продукта.
Технология разработки программного обеспечения – это система инженерных принципов для создания экономичного ПО, которое надежно и эффективно работает в реальных компьютерах [33]. Данное определение имеет частный характер, поскольку учитывает только две из шести характеристик качества ПО – надежность и эффективность. С учетом этого можно сформулировать более общее и точное определение.
Технология разработки программного обеспечения – это система инженерных принципов для создания экономичного ПО с заданными характеристиками качества.
Любая технология разработки ПО базируется на некоторой методологии или совокупности методологий [33].
Под методологией понимается система принципов и способов организации процесса разработки программных средств. Цель методологии разработки ПО – внедрение методов разработки ПС, обеспечивающих достижение соответствующих характеристик качества.
В настоящее время широкую известность приобрели два базовых принципа разработки ПС: модульный и объектно-ориентированный.
Разработка модульных ПС основывается на использовании структурных методов проектирования, целью которых является разбиение по некоторым правилам проектируемого программного средства на структурные компоненты.
К структурным методам проектирования относятся такие классические методы, как структурное программирование, нисходящее проектирование, расширение ядра, восходящее проектирование и их комбинации, а также ряд современных методов и методологий разработки ПО.
Объектно-ориентированная разработка базируется на применении объектных методов, к которым относятся методологии объектно-ориентированного анализа, проектирования и программирования.
Программные средства, программное обеспечение (software) – полный набор (программное обеспечение) или часть (программные средства) программ, процедур, правил и связанной с ними документации системы обработки информации. Программное средство – ограниченная часть программного обеспечения системы обработки информации, имеющая определенное функциональное назначение.
Программный модуль (software unit) – отдельно компилируемая часть программного кода (программы).
Программный продукт (software product) – набор компьютерных программ, процедур, а также связанных с ними документации и данных. Продукты включают промежуточные продукты и продукты, предназначенные для пользователей типа разработчиков и персонала сопровождения.
Нотация (notation) – система графических обозначений для записи промежуточных и конечного результатов разработки ПС (в том числе предметной области, требований, результатов проектирования и т.п.).
Базовыми понятиями технологии разработки ПС являются понятия жизненного цикла, стратегии разработки и модели жизненного цикла, реализующей данную стратегию.
В основе деятельности по созданию и использованию программного обеспечения (ПО) лежит понятие его жизненного цикла (ЖЦ).
Жизненный цикл ПО – модель создания и использования ПО, отражающая его различные состояния, начиная с момента возникновения необходимости в данном программном изделии и заканчивая моментом его полного выхода из употребления у всех пользователей.
Принято выделять следующие этапы ЖЦ ПО:
анализ требований;
проектирование;
кодирование;
тестирование и отладка;
эксплуатация и сопровождение;
вывод из эксплуатации и замена.
ЖЦ образуется в соответствии с принципом нисходящего проектирования и, как правило, носит итерационный характер: реализованные этапы, начиная с самых ранних, циклически повторяются в соответствии с изменением требований и внешних условий, изменениями ограничений и т.п.
На каждом этапе разработки создается определенный комплект документов и технических решений. Для каждого следующего этапа в качестве входных используются документы предыдущего. Каждый этап завершается верификацией порожденных документов с целью проверки их соответствия исходным документам этапа.
Модели ЖЦ определяют порядок исполнения этапов в ходе разработки, а также критерии перехода от этапа к этапу. Наибольшее распространение получили следующие модели:
Каскадная модель ЖЦ ПО (1970-1980 гг.) – предполагает переход к следующему этапу после полного завершения предыдущего (рисунок 1).
Поэтапная модель с промежуточным контролем (1980-1985 гг.) – итерационная модель разработки ПО с циклами обратной связи между этапами (рисунок 2). Преимущество модели – уменьшение трудоемкости благодаря межэтапным корректировкам. Недостаток – отсутствие четко выделенных этапов разработки, растягивание их на весь ЖЦ.
Спиральная модель (1986–1990 гг.) – упор делается на начальные этапы ЖЦ: анализ требований, проектирование спецификаций, предварительное и детальное проектирование. На этих этапах проводится проверка и обоснование реализуемости технических решений путем создания прототипов. Каждый виток спирали соответствует поэтапной модели создания фрагмента или версии программного изделия, уточняются цели и параметры проекта и в результате выбирается обоснованный вариант, который доводится до реализации (рисунок 3).
Преимущества модели:
Накопление и повторное использование программных средств, моделей и прототипов.
Ориентация на развитие и модификацию ПО в процессе проектирования.
Анализ риска и издержек в процессе проектирования.
ЖЦ ПО в отличии от продуктов материального производства заканчивается не физическим износом, а моральным. ПО морально устарело, если оно перестало удовлетворять актуальным требованиям, а дальнейшая его модификация не представляется возможной или не выгодна.
Главная особенность индустрии ПО состоит в концентрации сложности на начальных этапах ЖЦ (анализ, проектирование) при относительно невысокой сложности и трудоемкости последующих этапов. Более того, нерешенные вопросы и ошибки, допущенные на этапах анализа и проектирования, порождают на последующих этапах трудные, часто неразрешимые проблемы и, в конечном счете, приводят к неуспеху всего проекта. Рассмотрим эти этапы более подробно.
Анализ требований – первая фаза разработки ПО, на которой требования заказчика уточняются, формализуются и документируются. Фактически на этом этапе дается ответ на вопрос: "Что должна делать будущая система". Именно здесь лежит ключ к успеху всего проекта. В практике создания больших систем ПО известно немало примеров неудачной реализации проекта именно из-за неполноты и нечеткости определения системных требований [33].
Рисунок 1 – Каскадная модель жизненного цикла программного обеспечения.
Рисунок 2 – Поэтапная модель жизненного цикла программного обеспечения
Рисунок 3 – Спиральная модель жизненного цикла программного обеспечения
Список требований к разрабатываемой системе должен включать:
совокупность условий, при которых предполагается эксплуатировать будущую систему (аппаратные и программные ресурсы, предоставляемые системе; внешние условия ее функционирования; состав людей и работ, имеющих к ней отношение);
описание выполняемых системой функций;
ограничения в процессе разработки (директивные сроки завершения отдельных этапов, имеющиеся ресурсы, организационные процедуры и мероприятия, обеспечивающие защиту информации).
Целью анализа является преобразование общих, неясных знаний о требованиях к будущей системе в точные (по возможности) определения. На этом этапе определяются:
архитектура системы, ее функции, внешние условия, распределение функций между аппаратурой и ПО;
интерфейсы и распределение функций между человеком и системой;
требования к программным и информационным компонентам ПО, необходимые аппаратные ресурсы, требования к БД, физические характеристики компонентов ПО, их интерфейсы.
Этап проектирования дает ответ на вопрос: "Как (каким образом) система будет удовлетворять предъявленным к ней требованиям?". Задачей этого этапа является исследование структуры системы и логических взаимосвязей ее элементов, причем здесь не рассматриваются вопросы, связанные с реализацией на конкретной платформе.
Проектирование – итерационный процесс получения логической модели системы вместе со строго сформулированными целями, поставленными перед нею, а также написания спецификаций физической системы, удовлетворяющей этим требованиям.
Обычно этот этап разделяют на два подэтапа:
проектирование архитектуры ПО, включающее разработку структуры и интерфейсов компонентов, согласование функций и технических требований к компонентам, методам и стандартам проектирования, производство отчетных документов;
детальное проектирование, включающее разработку спецификаций каждого компонента, интерфейсов между компонентами, разработку требований к тестам и плана интеграции компонентов.
В результате деятельности на этапах анализа и проектирования должен быть получен проект системы, содержащий достаточно информации для реализации системы на его основе в рамках бюджета выделенных ресурсов и времени.
Кодирование. На этом этапе должны быть получены следующие результаты:
Верифицированная детальная спецификация каждого блока:
Спецификация каждой подпрограммы или модуля, имени, назначения, предположений, размеров, последовательности вызовов, ошибочных выходов, входных и выходных данных, алгоритмов и логической схемы.
Описание базы данных до уровня атрибутов.
Верификация полноты, непротиворечивости и соответствия требованиям проектных спецификаций системы и планам распределения ресурсов.
Одобренный план приемных испытаний.
Руководство пользователя и предварительный план комплексирования и отладки.
Проверка работы всех модулей не только для номинальных, но и для исключительных и предельных значений.
Проверка всех вариантов ввода и вывода, включая сообщения об ошибках.
Выполнение всех операторов и всех ветвей передачи управления.
Проверка выполнения стандартов разработки.
Завершение помодульного документирования внутренней структуры.
Эксплуатация и сопровождение. Содержание данного этапа следующее:
Проверка удовлетворения приемных испытаний системы.
Проверка удовлетворения системных требований.
Проверка производственной готовности, аппаратуры, средств обслуживания и персонала.
Завершение всех специфицированных работ и ввод системы в действие.
Вывод из эксплуатации и замена. На данном этапе решаются следующие задачи:
Выбор новой системы.
Миграция данных в новую систему.
Очистка системы от старого ПО.
Утилизация материальных носителей (диски, документация и т.п.).
Документирование вывода и замены ПО.
Мы видим, что ЖЦ ПО возник как ответ на проблему управленческой сложности при разработке ПО, и главным его назначением является структурирование и организация цикла разработки информационных систем.
Вопросы
1) Понятие технологии разработки программного обеспечения (ТРПО)
2) Понятие и этапы ЖЦ ПО
3) Каскадная модель ЖЦ ПО
4) Модель ЖЦ ПО с промежуточным контролем
5) Спиральная модель ЖЦ ПО
6) Требования к разрабатываемой системе
Дополнительная информация
1) http://www.interface.ru/home.asp?artId=4718
2) http://www.interface.ru/iarticle/files/35798_52840953.pdf
