Программная инженерия: назначение, основные принципы и понятия

Содержание

Слайд 2

Предпосылки и история

Первый кризис программирования
Повторное использование кода
Модульное программирование
Рост сложности программ
Структурное программирование
Модификация программ
Объектно-ориентированное

Предпосылки и история Первый кризис программирования Повторное использование кода Модульное программирование Рост
программирование
Продолжение кризиса программирования

Слайд 3

Повторное использование кода

Проблема
Дублирование фрагментов кода
Модульное программирование
Выделение фрагментов в модули
Повторное использование модулей
Создание библиотек

Повторное использование кода Проблема Дублирование фрагментов кода Модульное программирование Выделение фрагментов в
модулей

Слайд 4

Рост сложности программ

Проблема
Сложные программные комплексы
Объем кода, к-во связей, к-во разработчиков, к-во пользователей
Жизненный

Рост сложности программ Проблема Сложные программные комплексы Объем кода, к-во связей, к-во
цикл: стадии внедрения и сопровождения
Структурное программирование
«Правильное» проектирование и кодирование
Основные принципы:
Нисходящее проектирование
Применение специальных языков проектирования
Дисциплина проектирования и разработки:
планирование и документирование проекта
поддержка соответствие кода проектной документации
Структурное кодирование (линейный блок, If-then-else, цикл)

Слайд 5

Модификация программ

Проблема
изменения в проекте и программе без изменения ранее написанного кода
Объектно-ориентированное программирование
Класс

Модификация программ Проблема изменения в проекте и программе без изменения ранее написанного
– модуль со свойствами, поведением, обязанностями
Парадигмы ООП:
Инкапсуляция и сокрытие деталей
Наследование
Полиморфизм

Слайд 6

Некоторые итоги

Главная цель программной инженерии - сокращение стоимости ПО
Сформировались основные принципы и

Некоторые итоги Главная цель программной инженерии - сокращение стоимости ПО Сформировались основные
методы проектирования ПО:
Жизненный цикл ПО
Модульное программирование
Структурное проектирование и программирование
Объектно-ориентированное проектирование и программирование

Слайд 7

Основные определения

Программная инженерия – это
установление и использование обоснованных инженерных принципов (методов) для

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

Слайд 8

Разберемся в вопросах

Что такое программное обеспечение (software)?
Что такое программная инженерия?
В

Разберемся в вопросах Что такое программное обеспечение (software)? Что такое программная инженерия?
чем разница между программной инженерией (software engineering) и информатикой (computer science)?
В чем отличие программной инженерии от других инженерий?
Из чего складывается стоимость ПО?

Слайд 9

Программное обеспечение?

Компьютерные программы и связанная с ними документация и данные (ISO/IEC

Программное обеспечение? Компьютерные программы и связанная с ними документация и данные (ISO/IEC
12207)
Программные продукты могут разрабатываться для конкретного заказчика или для обобщенного рынка
Программные продукты могут быть
Коробочными (generic products, shrink-wrapped software), т.е. разработанными для продажи многим различным заказчикам
Заказными (bespoke, custom), т.е. разработанными для одного покупателя по его спецификациям

Слайд 10

Программная инженерия

Инженерная дисциплина, которая связана со всеми аспектами производства ПО от

Программная инженерия Инженерная дисциплина, которая связана со всеми аспектами производства ПО от
начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию.
Две ключевые фразы в определении:
Инженерная дисциплина
Ориентация на практический результат
Применение теорий, методов и способов для достижения результата
Лучшие практики (best practices)
При ограниченном ресурсе времени, бюджета, оборудования, людей
Все аспекты производства ПО
Управление программными проектами
Разработка средств, методов и теорий

Слайд 11

В чем отличия от информатики?

Информатика (computer science) - теория и методы вычислительных

В чем отличия от информатики? Информатика (computer science) - теория и методы
и программных систем
Программная инженерия - практические проблемы создания ПО
Информатика – теоретический фундамент программной инженерии
Не всегда достаточный
Не единственный (финансы, управление проектом, работа с заказчиком, …)

Слайд 12

В чем отличие от других инженерий?

Вопросы:
Почему так велика доля провальных проектов?
Можно ли

В чем отличие от других инженерий? Вопросы: Почему так велика доля провальных
применять опыт других инженерий?
Фазы жизненного цикла любого продукта:
Проектирование, создание образца, испытание, производство, эксплуатация
Программа – не материальный объект:
Фазы производства и изготовления образца отсутствуют
Стоимость программы – это стоимость проектирования
У коробочных продуктов «размазывается» по копиям
У заказных продуктов остается высокой.

Слайд 13

В чем еще отличие от других инженерий?

Программа – искусственный объект
Нет объективных законов

В чем еще отличие от других инженерий? Программа – искусственный объект Нет
контроля проекта
Тестирование – единственный способ проверки
Программная инженерия – молодая дисциплина

Слайд 14

Стоимость ПО

Зависит от типа ПО, методологии разработки и метода оценки
Типовое распределение:
15% -

Стоимость ПО Зависит от типа ПО, методологии разработки и метода оценки Типовое
спецификация
25% - проектирование
20% - разработка
40% - интеграция и тестирование
Коробочное ПО
Рост доли тестирования за счет спецификации
Заказное ПО
Рост доли тестирования за счет проектирования и разработки

Слайд 15

Программный процесс

Жизненный цикл – непрерывный процесс с момента принятия решения о создании

Программный процесс Жизненный цикл – непрерывный процесс с момента принятия решения о
ПО до снятия его с эксплуатации.
Процесс – совокупность действий и задач, имеющих целью достижение значимого результата.
Основные процессы (этапы или фазы) ЖЦ:
Спецификация требований
Разработка проекта программы
Кодирование
Тестирование
Документирование

Слайд 16

Программный процесс

Дополнительные (нефункциональные) процессы:
создание инфраструктуры, управление конфигурацией, управление качеством, обучение, разрешение противоречий,

Программный процесс Дополнительные (нефункциональные) процессы: создание инфраструктуры, управление конфигурацией, управление качеством, обучение,

Установление процесса:
Описание процесса
Обучение процессу
Введение метрик
Контроль выполнения
Усовершенствование

Слайд 17

Модель программного процесса

Модель программного процесса — это упрощенное описание программного процесса, представленное

Модель программного процесса Модель программного процесса — это упрощенное описание программного процесса,
с некоторой точки зрения.
Модели жизненного цикла:
Водопадная (каскадная) модель
Спиральная (циклическая) модель
Компонентная модель
Формальная модель
Комбинированные модели
Модели организации работ:
Модель потока работ (workflow model)
Модель потоков данных (data flow model)
Ролевая модель

Слайд 18

Методы программной инженерии

Метод программной инженерии — это структурный подход к созданию

Методы программной инженерии Метод программной инженерии — это структурный подход к созданию
ПО:
как высококачественного продукта
экономически эффективным способом.
Наиболее известные методы:
Структурного анализа и проектирования (Том Де Марко, 1978),
Сущность-связь (Чен, 1976),
Объектно-ориентированного анализа и проектирования (Буч, 1994, Рамбо,1991).

Слайд 19

Цель - создание и поэтапное преобразование моделей ПО
Методы должны включать в себя

Цель - создание и поэтапное преобразование моделей ПО Методы должны включать в
следующие компоненты:
Описание моделей системы и нотация
Правила и ограничения
Рекомендации
Руководство по применению метода
Нет идеальных методов, нет абсолютных методов

Слайд 20

CASE системы (Сomputer Aided System Engineering)

Определение CASE
Использование компьютеров для поддержки процесса

CASE системы (Сomputer Aided System Engineering) Определение CASE Использование компьютеров для поддержки
создания программ. Может включать инструментальные программные средства для проектирования ПО, формирования требований, кодирования, тестирования, документирования и других действий по созданию ПО
Эволюция CASE
Ассемблеры, компиляторы, интерпретаторы
Трассировщики, символические отладчики
Текстовые редакторы, системы анализа исходных текстов
Средства для анализа требований и проектирования
Среды визуального программирования
Средства генерации исходных кодов
Средства поддержки полного жизненного цикла ПО

Слайд 21

Классификация CASE средств:
По уровню применения:
Upper CASE -средства анализа требований
Middle CASE - средства

Классификация CASE средств: По уровню применения: Upper CASE -средства анализа требований Middle
проектирования
Low CASE - cсредства разработки приложений
Специализированные
Средства проектирования баз данных
Средства реинжиниринга (восстановления)
Вспомогательные
Планирования и управления проектом
Конфигурационного управления
Тестирования
Интегрированные CASE
Главное правило: сначала метод – потом CASE

Слайд 22

Свойства хорошей программы

Удовлетворять функциональным требованиям
Нефункциональные требования:
Сопровождаемость (maintainability)
Возможность дальнейшего развития.
Надежность (dependability)
Отказоустойчивость, безопасность,

Свойства хорошей программы Удовлетворять функциональным требованиям Нефункциональные требования: Сопровождаемость (maintainability) Возможность дальнейшего
защищенность
Эффективность (efficiency)
Память, процессорное время, каналы связи.
Удобство использования (usability)
Понятно пользователю

Слайд 23

Основные трудности

Главная проблема: поиск универсального метода и процесса для создания ПО любого

Основные трудности Главная проблема: поиск универсального метода и процесса для создания ПО
типа в любых условиях.
Основные трудности:
Наследование ранее созданного ПО (legacy systems).
сопровождение – поддержка и развитие старого ПО.
Разнородность программных систем.
распределенные сети, разнородное оборудование, разные среди, различные ОС
Сокращение времени на разработку.
сократить время разработки ПО без снижения его качества.
Трудности часто оказываются связанными между собой

Слайд 24

Профессиональные и этические требования

Развитие IT индустрии оказывает все большее воздействие на

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

Слайд 25

Профессиональные и этические требования

Более тонкие профессиональные обязательства:
Конфиденциальность
Неразглашение сведений о своих работодателях

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

Слайд 26

Стандартизация и стандарты

Что такое стандарты и сертификация на соответствие стандартам?
Какие бывают стандарты?
Кто

Стандартизация и стандарты Что такое стандарты и сертификация на соответствие стандартам? Какие
разрабатывает стандарты программной инженерии?
Основные стандарты программной инженерии

Слайд 27

Стандарты и сертификация

Стандарты и сертификация

Слайд 28

Технология

Знание (логия) мастерства (техно):
совокупность приёмов и способов производства;
научная дисциплина
сами операции производства
описание

Технология Знание (логия) мастерства (техно): совокупность приёмов и способов производства; научная дисциплина
производственных процессов,
инструкции по их выполнению,
технологические правила, требования, карты, графики и др.

Слайд 29

Что такое стандарт?

От англ. standard - норма, образец, мерило:
нормативный документ, устанавливающий комплекс

Что такое стандарт? От англ. standard - норма, образец, мерило: нормативный документ,
норм и правил;
типовой образец, эталон, модель,
Стандарт может быть разработан на
материально-технические предметы
нормы, правила, требования
Стандартизация распространяется на все сферы человеческой деятельности:
науку, технику, промышленное и с.-х. производство, строительство, здравоохранение, транспорт и т.д.

Слайд 30

Что такое сертификация?

Certification - "сделано верно“:
Заявление о соответствии поставщика (изготовителя) (supplier's

Что такое сертификация? Certification - "сделано верно“: Заявление о соответствии поставщика (изготовителя)
declaration)
письменная гарантия соответствия продукции заданным требованиям
Сертификация соответствия
процедура, посредством которой третья сторона дает письменную гарантию, что продукция, процесс, услуга соответствуют заданным требованиям.

Слайд 31

Какие бывают стандарты?

Типы стандартов
Корпоративные
Отраслевые
Государственные
Международные
Виды стандартов
Рекомендательные
Обязательные

Какие бывают стандарты? Типы стандартов Корпоративные Отраслевые Государственные Международные Виды стандартов Рекомендательные Обязательные

Слайд 32

Кто разрабатывает стандарты Software Engineering (SE)

Кто разрабатывает стандарты Software Engineering (SE)

Слайд 33

Основные стандарты SE

ISO/IEC 12207 - Information Technology - Software Life Cycle Processes
SEI

Основные стандарты SE ISO/IEC 12207 - Information Technology - Software Life Cycle
CMM - Capability Maturity Model (for Software)
ISO/IEC 15504 - Software Process Assessment
PMBOK - Project Management Body of Knowledge
SWEBOK - Software Engineering Body of Knowledge
ACM/IEEE CC2001 - Computing Curricula 2001

Слайд 34

IEEE SWEBOK

IEEE Computer Society Software Engineering Body of Knowledge – Свод

IEEE SWEBOK IEEE Computer Society Software Engineering Body of Knowledge – Свод
знаний по программной инженерии, 18 мая 2004 г.
Области знаний программной инженерии:
Software Requirements – требования к ПО
Software Design – проектирование ПО
Software Construction – конструирование ПО
Software Testing – тестирование ПО
Software Maintenance – сопровождение ПО
Software Configuration Management – управление конфигурац.
Software Engineering Management – управление IT проектом
Software Engineering Process – процесс ПИ
Software Engineerting Tools and Methods – методы и инструменты
Software Quality – качество ПО

Слайд 35

ACM/IEEE Computing Curricula

ACM/IEEE Computing Curricula 2001 – Академический образовательный стандарт в

ACM/IEEE Computing Curricula ACM/IEEE Computing Curricula 2001 – Академический образовательный стандарт в
области компьютерных наук 2001
Основные разделы компьютерных наук:
Computer science – Информатика (2001г);
Computer engineering – Компьютерная инженерия;
Software engineering – Программная инженерия (2004г.)
Information systems – Информационные системы.
Сайты:
СС2001: http://www.computer.org/education/cc2001
CC2001. Информатика: http://se.math.spbu.ru/cc2001