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

advertisement
Преподаватель:
Венцов Н.Н.
Предпосылки и история
Термин – software engineering
(программная инженерия) - впервые
был озвучен в октябре 1968 года на
конференции подкомитета НАТО по
науке и технике (г. Гармиш, Германия).
Присутствовало 50 профессиональных
разработчиков ПО из 11 стран.
1.Повторное использование кода
(модульное программирование)
• Проблема. Высокая стоимость программ связана с
разработкой одинаковых фрагментов кода за счёт
решения одинаковых задач.
• Модульное программирование.
Главный принцип - выделение одинаковых фрагментов
и оформление их в виде модулей. Каждый модуль
снабжается описанием и интерфейсом. Не всегда
можно применить.
Модули решения математических задач
2. Рост сложности пограмм
• Переход от разработки относительно
простых программ к разработке сложных
программных комплексов. Был вызван
появлением вычислительной техники
третьего поколения (интегральные схемы).
• Проблема. Основная часть стоимости
комплексов приходится не на создание, а на
их внедрение и эксплуатацию.
К числу таких сложных задач относятся:
• системы управления космическими объектами
• управления оборонным комплексом
• автоматизации крупного финансового
учреждения и т.д.
Показатели оценки сложности подобных
комплексов
• Большой объем кода (миллионы строк)
• Большое количество связей между элементами кода
• Большое количество разработчиков (сотни человек)
• Большое количество пользователей (сотни и тысячи)
• Длительное время использования
Основные принципы технологии структурного
проектирования и кодирования:
 Нисходящее функциональное проектирование
(принцип «разделяй и властвую»)
 Применение специальных языков
проектирования и средств автоматизации
использования этих языков
 Дисциплина проектирования и разработки
 Структурное кодирование без goto
3. Модификация программ (ООП)
• Проблема. Проблема заказчика, который не
знает, что он хочет. Создание программного
продукта превратилось в его перманентное
перепроектирование.
• Решение! Объектно-ориентированное
программирование.
Объектно-ориентированное программирование
Суть в том, что вводится понятие класса (модуля)
с определенными свойствами и поведением.
Каждый класс может порождать объекты –
экземпляры данного класса.
При этом работают основные принципы:
инкапсуляция, наследование, полиморфизм.
Некоторые итоги
1. Программная инженерия (ПИ) как некоторое
направление возникло и формировалось под
давлением роста стоимости создаваемого
программного обеспечения.
2. Главная цель – сокращение стоимости и сроков
разработки программ.
3. Сформулированы фундаментальные принципы
разработки программных продуктов
4. Основной принцип ПИ – программы создаются в
результате выполнения этапов, составляющих ЖЦ
программного продукта.
• Фундаментальные методы проектирования - модульное,
структурное и объектно-ориентированное
Продолжение кризиса программирования
Программная инженерия – что это такое?
• установление и использование обоснованных
инженерных принципов (методов) для экономного
получения ПО, которое надежно и работает на реальных
машинах.
• та форма инженерии, которая применяет принципы
информатики (computer science) и математики для
рентабельного решения проблем ПО.
• дисциплина, целью которой является создание
качественного ПО, которое завершается вовремя, не
превышает выделенных бюджетных средств и
удовлетворяет выдвигаемым требованиям.
Software - программное обеспечение или
программный продукт?
– это не только программы, а также
вся связанная с ними документация
и конфигурационные данные,
необходимые для корректной
работы программы
В зависимости от заказчика ПО бывает:
• коробочные продукты
(generic products – общие продукты или
shrink-wrapped software – упакованное ПО)
• заказные продукты
(bespoke – сделанный на заказ или
customized products – настроенный продукт)
Программная инженерия
— это
связана со
, которая
от начальных стадий
создания спецификации до поддержки
системы после сдачи в эксплуатацию.
 Набор инженерных методов или способов,
теоретически не обоснованных, но получивших
неоднократное подтверждение на практике получили
название
.
Все аспекты производства ПО
Финансы
Оборудование
Люди
Время
Техника
Отличие от информатики
Информатика
(computer science)
Программная инженерия
software engineering
Теория и методы
вычислительных и
программных систем
Практические проблемы
создания ПО
Сравнение с другими инженериями
2 главных вопроса:
• Почему доля провальных проектов в
программной инженерии так велика по
сравнению с другими инженериями?
• Можно ли в программной инженерии
применять опыт других инженерий?
Из чего складывается стоимость ПО?
• 15% - спецификация – формулировка требований и условий
разработки
• 25% - проектирование – разработка и верификация
проекта
• 20% - разработка – кодирование и
тестирование компонент
• 40% - интеграция и тестирование –
объединение и сборочное тестирование
продукта
Методы программной инженерии
Методы должны включать в себя
следующие компоненты:
 Описание моделей
 например, объектные модели, конечно-автоматные модели и т.д
 Правила и ограничения при разработке моделей
 например, каждый объект должен иметь одинаковое имя)
 Рекомендации
 ни у одного объекта не должно быть больше семи подобъектов
 Руководство по применению метода
 все атрибуты должны быть задокументированы до определения
операций, связанных с этим объектом
Свойства хорошей программы
•
•
•
•
Сопровождаемость (maintainability)
Надёжность (dependability)
Эффективность (efficiency)
Удобство использования (usability)
Профессиональные и этические
требования
• Конфиденциальность
• Компетентность
• Защита интеллектуальной
собственности
• Злоупотребление компьютером
Восемь Принципов программного
инженера
1.
2.
3.
4.
5.
6.
7.
8.
ОБЩЕСТВО
КЛИЕНТ И РАБОТОДАТЕЛЬ
ПРОДУКТ
СУЖДЕНИЕ
МЕНЕДЖМЕНТ
ПРОФЕССИЯ
КОЛЛЕГИ
ЛИЧНОСТЬ
Стандарты программной инженерии
• Корпоративные стандарты
• Отраслевые стандарты
• Государственные стандарты (ГОСТы)
Разработчики стандартов программной
инженерии
ISO - International Organization for
Standardization
ACM - Association for Computing Machinery
SEI - Software Engineering Institute
PMI - Project Management Institute
IEEE - Институт инженеров по электронике
Основные стандарты программной инженерии
 ISO/IEC 12207 - Information Technology - Software Life Cycle Processes Процессы жизненного цикла программных средств.
 SEI CMM - Capability Maturity Model (for Software) - модель зрелости
процессов разработки
 ISO/IEC 15504 - Software Process Assessment - Оценка и аттестация
зрелости процессов создания и сопровождения ПО
 PMBOK - Project Management Body of Knowledge - Свод знаний по
управлению проектами
 SWBOK - Software Engineering Body of Knowledge - Свод знаний по
программной инженерии
 ACM/IEEE CC2001 - Computing Curricula 2001 – Академический
образовательный стандарт
Download