Содержание
-
Введение в предмет
Программная инженерия Лекция 1
-
Терминология
Программное обеспечение (ПО) – программы для технических устройств (компьютеров) и соответствующая документация. Под программной инженерией (ПИ) понимается «область компьютерной науки и технологии, которая занимается построением программных систем, настолько больших и сложных, что для этого требуется участие слаженных команд разработчиков различных специальностей и квалификаций». Суть методологии ПИ «состоит в применении систематизированного, научного и предсказуемого процесса проектирования, разработки и сопровождения программных средств» Программная инженерия занимается разработкой систематических моделей и надежных методов производства высококачественного программного обеспечения, такой подход распространяется на все уровни — от теории и принципов до реальной практики создания программного обеспечения, которая лучше всего заметна сторонним наблюдателям 2 Термин «инженерия программного обеспечения» появился впервые в 1968 году на Конференции НАТО «Инженерия программного обеспечения» и предназначался, чтобы спровоцировать размышления относительно текущего в то время «кризиса программного обеспечения».
-
Технологический процесс создания ПО – совокупность процессов, ведущих к созданию или развитию программного обеспечения Структура затрат на создание ПО: ок 60% от общих затрат – на разработку ПО, ок 40% - на тестирование и отладку. Методы инженерии программного обеспечения – структурные решения, предназначенные для разработки ПО и включающие системные модели, формализованные нотации и правила проектирования, а также способы управления процессом создания ПО. CASE-средства – информационные системы, предназначенные для автоматизации процесса создания ПО. Они часто используются в качестве основы методов инженерии ПО. Признаки качественного ПО. Программные продукты должны удовлетворять требованиям функциональности и эффективности (с точки зрения пользователя), а также быть надежными удобными в эксплуатации и иметь возможности для модернизации. Основные проблемы ПИ: проблемы наследования ранее созданного ПО, проблема возрастающей разнородности систем, проблема, порожденная требованием уменьшения времени на создание ПО 3
-
Программная инженерия как система
В качестве элементов системы часто рассматриваются группы и конкретные разработчики, участвующие в процессах разработки, проектирования, сопровождения, а также группа менеджеров, состав которой зависит от рыночного назначения системы ПИ. 4 Разработка программного обеспечения связана с дисциплинами информатики, управления проектами, и инженерии систем Под системой, используемой в ПИ, обычно понимают формальную триаду из множеств: элементов, ее составляющих, их состояний, а также из описаний переходов по состояниям.
-
Использование современного ПО
Новый AirbusA-380 использует довольно много ПО, чтобы создать современную кабину в самолете. Метод инженерии программного обеспечения позволил создать программное обеспечение самолёта, описываемое миллионами строк исходного кода. 5
-
6
-
Жизненный цикл программных средств
Термином жизненный цикл (ЖЦ) принято отражать совокупность процессов и этапов развития организмов живой природы, технических систем, продуктов производства от моментов зарождения или появления потребности их создания и использования до прекращения функционирования или применения. Программы и данные в системах и вычислительных машинах являются наиболее гибкими компонентами программной инженерии и подвержены изменениям в течение всего их ЖЦ. Типовая модель процессов жизненного цикла сложной системы: определение потребностей; исследование и описание основных концепций; проектирование и разработка; испытания системы; создание и производство; распространение и продажа; эксплуатация; сопровождение и мониторинг; снятие с эксплуатации (утилизация). 7
-
Классы жизненного цикла программ
Первый класс – малые программы - создаются одиночками или небольшими коллективами (3 –5) специалистов, которые: создаются для получения конкретных результатов автоматизации; не предназначены для массового тиражирования и распространения; не имеют конкретного независимого заказчика-потребителя; не ограничиваются заказчиком допустимой стоимостью, трудоемкостью и сроками их создания, требованиями заданного качества и документирования; не подлежат независимому тестированию, гарантированию качества и/или сертификации. Второй класс– большие программы – крупномасштабные комплексы программ для сложных систем управления и обработки информации, оформляемые в виде программных продуктов с гарантированным качеством, и отличаются : большая размерность, высокая трудоемкость и стоимость создания определяют необходимость тщательного анализа и возможной конкурентоспособности на рынке; от заказчика, необходимо получать квалифицированные конкретные требования к функциям и характеристикам проекта и продукта, соответствующие выделенному финансированию и квалификации исполнителей проекта; необходимы квалифицированные менеджеры проектов; участвуют специалисты разной квалификации и специализации, от которых требуется высокая ответственность за качество результатов деятельности каждого из них; от разработчиков проектов требуются гарантии высокого качества, надежности функционирования и безопасности применения, в которые не допустимо прямое вмешательство заказчика и пользователей для изменений, не предусмотренных эксплуатационной документацией разработчиков; необходимо применять индустриальные, регламентированные стандартами процессы, этапы и документы, а также методы, методики и комплексы средства автоматизации, технологии обеспечения жизненного цикла комплексов программ. 8
-
Фундаментальные модели ЖЦ ПС
Два основных типа моделей жизненного цикла для высокотехнологичных проектов: Прогнозирующие модели жизненного цикла "ставят оптимизацию выше адаптивности" (DesaulniersandAnderson 2002). К этим моделям относятся: Водопад (известна также как "традиционная" или "сверху вниз"): линейное упорядочивание фаз, которые могут быть строго последовательными или в некоторой степени перекрываться, ни одна из фаз обычно не повторяется. Прототипирование: разработка функциональных требований и топологическое проектирование осуществляются одновременно. Быстрая разработка приложения (RapidApplicationDevelopment, RAD): основана на использовании эволюционирующего прототипа, который не отбрасывается. Инкрементное построение: разбиение большого объема проектно-конструкторских работ на последовательность более малых составляющих частей. Спираль: повторение одного и того же набора фаз жизненного цикла, таких как планирование, проектирование, построение и оценивание, до тех пор, пока разработка продукта не будет завершена. 2. Адаптивные жизненные циклы "принимают и схватывают изменения в ходе процесса разработки и отвергают детальное планирование" (DesaulniersandAnderson, 2002). К этим моделям относятся: Адаптивная разработка программного обеспечения (AdaptiveSoftwareDevelopment, ASD): определяемая миссией, основанная на компонентах, подразумевает итеративные циклы и циклы с известной длительностью, определяемые степенью риска, допускающая изменения. Экстремальное программирование (ExtremeProgramming, XP): команды разработчиков, менеджеров и пользователей, программирование выполняется парами, итеративный характер процесса, коллективное владение кодами программ. SCRUM: подобен приведенным выше адаптивным жизненным циклам, выполняется на итеративной основе, итерации носят название "спринтов", имеют длительность порядка 30 дней (типовое значение); каждый "спринт" должен дать на выходе определенную степень функциональности продукта; активная роль руководства в течение всего жизненного цикла. 9
-
Каскадная 10
-
Категории проектов: модели ЖЦ
11
-
Роль процессов
Методы и процессы стандартизации жизненного цикла ПС играют стабилизирующую и организующую роль во всем жизненном цикле многих сложных систем. Они обеспечивают: расширение и совершенствование функций систем и компонентов с сохранением их целостности и первичных затрат; систематическое повышение качества функционирования комплексов программ и баз данных для решения задач пользователей в различной внешней среде; улучшение технико-экономических характеристик применения систем и программных продуктов; совершенствование технологий обеспечения жизненного цикла сложных систем и комплексов программ. 12
-
Современные требования программной инженерии
Архитектура должна соответствовать текущим и перспективным целям и стратегическим, функциональным задачам, создаваемой системы, быть достаточно гибкой и допускать развитие и наращивание функций и ресурсов системы в соответствии с расширением сфер и задач её применения; В структуре и компонентах ПС и системы следует предусматривать обеспечение максимально возможной сохранности инвестиций в аппаратные и программные средства, в базы данных при длительном развитии, сопровождении и модернизации системы; Необходимо обеспечивать эффективное использование ресурсов в ЖЦ системы и минимизировать интегральные затраты на обработку данных в типовых режимах её функционирования с учетом эксплуатационных затрат и капитальных вложений в создание системы и программного продукта; Должны быть обеспечены безопасность функционирования системы и надежная защита данных от ошибок, от разрушения или потери информации, авторизация пользователей, управление рабочей загрузкой, резервированием и оперативным восстановлением; Предусматривать возможность интеграции гетерогенных вычислительных компонентов и возможность переноса ПС и БД на различные аппаратные и операционные платформы на основе концепции и стандартов открытых систем; Обеспечение обучения и упрощенного доступа конечных пользователей к управлению и результатам функционирования на основе современных графических средств и наглядных пользовательских интерфейсов. 13
-
ПО как система
Система это совокупность взаимодействующих компонентов, работающих совместно для достижения определенных целей Системы часто имеют иерархическую структуру, т.е. в качестве компонентов содержат другие системы (подсистемы) Системотехникакак технология создания систем, охватывает процессы создания спецификаций, проектирования, разработки, тестирования, внедрения и сопровождения систем как единого целого На основе спецификации требований системы определяют её архитектуру и затем, собрав воедино её отдельные части, создают законченную систему 14
-
Персонал
Системотехник, должен уделять равное внимание программному средству, аппаратным средствам и средствам взаимодействия с пользователями и системным окружением Специалист по созданию программного продукта должен понимать задачи и методы системотехники (поскольку возникающие проблемы часто являются результатом решений, принятых системотехниками) Программный менеджер (и/или системный инженер) должен быть знаком с несколькими способами проектирования, знать, как перевести расплывчатые требования и пожелания заказчика в четкое техническое задание, и уметь разговаривать с пользователем системы на языке предметной области 15
-
Место программной инженерии
Программная инженерия как часть системотехники охватывает все аспекты жизненного цикла ПС от начальной стадии разработки системных требований до завершения использования программного продукта. Программная инженерия рассматривает управление проектами ПС и разработка средств, методов и теорий, необходимых для обеспечения жизненного цикла комплексов программ. Программная инженерия систем коллективная работа. 16
-
Системные основы современных технологий
Основная цель современных технологийпрограммной инженерии состоит в обеспечении эффективности всего жизненного цикла комплексов программ для ЭВМ в различных проблемно-ориентированных областях. Рекомендуется использовать комплексную автоматизацию ЖЦ ПС. Методической основой технологии, регламентирующей деятельность специалистов, является типовой технологический процесс. Методология СММ (Capability Maturity Model – система и модель для оценки зрелости ПС). Основана на формализации и использовании пяти уровней зрелости технологий поддержки ЖЦ ПС Уровни зрелости характеризуются степенью формализации, адекватностью измерения и документирования процессов и продуктов в ЖЦ ПС, полнотой применения стандартов и инструментальных средств автоматизации работ, наличием и глубиной реализации функций системой качества технологических процессов и их результатов. Зрелость процессов это степень их управляемости, возможность поэтапной количественной оценки качества, контролируемость и эффективность результатов. 17
-
Методология обеспечения качества ПС
Концептуальные и организационные основы административного управления жизненным циклом и качеством ПС в системе СММ и CMMI:2003,определены в восьми базовых принципах, которые декларированы в стандартах ISO 9000:2000 и ISO 15504:1-9 Принцип 1 Ориентация предприятия-разработчика на потребителя-заказчика Принцип 2 Лидерство-руководство Принцип 3 Вовлечение персонала Принцип 4 Процессный подход Принцип 5Системный подход к административному управлению Принцип 6 Постоянное усовершенствование Принцип 7 Подход к принятию решений основанный на фактах Принцип 8 Взаимовыгодные отношения с поставщиками В стандарте ISO 15504 каждый из приведенных принципов прокомментирован комплексом действий 18
-
Автоматизация процессов
В современных автоматизированных технологиях программной инженерии, создания и совершенствования сложных ПС, с позиции обеспечения их качества можно выделить методы и средства, позволяющие: создавать программные модули и функциональные компоненты высокого, гарантированного качества; предотвращать дефекты проектирования за счет систем обеспечения качества, эффективных технологий и инструментальных средств автоматизации всего жизненного цикла комплексов программ и баз данных; обнаруживать и устранять различные дефекты и ошибки проектирования, разработки и сопровождения программ путем верификации и систематического тестирования на всех этапах жизненного цикла ПС; удостоверять достигнутые значения качества функционирования программных продуктов в процессе их испытаний и сертификации перед передачей в регулярную эксплуатацию пользователям. 19
-
Качество и надежность
Улучшение технико-экономических показателей создания ПС, а также предотвращение ошибок и дефектов обеспечивается применением современных технологий программной инженерии и систем автоматизированного проектирования. Для обнаружения, устранения ошибок и дефектов все этапы разработки и сопровождения ПС должны быть поддержаны методами и средствами верификации, а также систематического, автоматизированного тестирования корректности реализованных решений. В любых сложных импортныхПС всегда не гарантировано полное, абсолютное отсутствие случайных ошибок и дефектов Для удостоверения качества, надежности и безопасности применения сложных, критических систем, используемые в них программные продукты, следует подвергать сертификации аттестованными, проблемно-ориентированными испытательными центрами Заказчики сложных программных проектов должны выбирать подрядчиков-исполнителей, имеющих сертификаты, удостоверяющие применение ими систем гарантирования качества на основе адаптированных профилей международных стандартов 20
-
Стандарт управления проектами PMBOK Guide 3-rd Edition
Project Management Body of Knowledge (PMBOK) - Стандарт управления проектами PMBOK Guide 3-rd Edition (Project Management Body of Knowledge), Американского института управления проектами (PMI - Project Management Institute) определяет круг знаний, необходимых для эффективного управления проектами. Стандарт PMBOK Guide 3-rd Edition включают в себя процессы охватывающие все стадии жизненного цикла проекта (инициация, планирование, исполнение, контроль и завершение). Результаты или выходы одного процесса могут являются входами для другого процесса. Стандарт PMBOK включает следующие части процессов управления проектом: - Управление интеграцией (Project Integration Management) - Управление человеческими ресурсами (Project Human Resource Management) - Управление затратами (Project Cost Management) - Управление содержанием (Project Scope Management) - Управление сроками (Project Time Management) - Управление качеством (Project Quality Management) - Управление коммуникациями (Project Communication Management) - Управление рисками (Project Risk Management) - Управление поставками и контрактами (Project Procurement And Contracts Management) 21
-
SWEBOK (SoftwareEngineeringBodyofKnowledge)
SWEBOK (SoftwareEngineeringBodyofKnowledge) аккумулирует в себе представление сообщества о том, что должен знать и какими навыками владеть специалист в области управления ИТ-проектами. SWEBOK вводит следующие десять областей общедоступных знаний в сфере разработки программного обеспечения. Первые пять областей соответствуют стадиям традиционного жизненного цикла программного обеспечения в «водопадной» модели разработки.1. Требования к программному обеспечению (SoftwareRequirements)2. Проектирование программного обеспечения (SoftwareDesign)3. Конструирование программного обеспечения (SoftwareConstruction)4. Тестирование программного обеспечения (SoftwareTesting)5. Сопровождение программного обеспечения (SoftwareMaintenance)6. Управление конфигурацией программного обеспечения (SoftwareConfigurationManagement)7. Управление в области ИТ (SoftwareEngineeringManagement)8. Процесс разработки ПО (SoftwareEngineeringProcess)9. Инструменты и методы разработки ПО (SoftwareEngineeringToolsandMethods)10. Качество программного обеспечения (SoftwareQuality). 22
-
Домашнее задание
Найти классические схемы жизненного цикла, срисовать в тетрадь. Найти стандарт ISO 15504, прочитать, кратко выписать «о чем» и примерный комплекс действий. 23
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.