Предмет и принципы программной инженерии
Основы программной инженерии
Кулямин В.В., ВМК МГУ
Программная инженерия
Инженерная дисциплина, изучающая методы разработки, анализа и развития программных систем
•Инженерная дисциплина
•Программные системы, программное обеспечение (ПО)
•Методы разработки, анализа и развития
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
2 |
Дисциплины
•Фундаментальные
Нацелены на познание мира в заданных аспектах
Дают ответы на вопросы «Как устроено нечто и почему оно такое»
Пример: электродинамика (как устроены электромагнитные поля)
•Прикладные
Нацелены на решение определенных проблем
Дают ответы на вопросы «Что делать, чтобы решить некоторые задачи» - Инженерные
Нацелены на решение задач, связанных с созданием и поддержкой работоспособности определенных конструкций
Пример: электротехника (как создавать электросхемы с определенными характеристиками и чинить их)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
3 |
Истоки
•Бурное развитие программного обеспечения в 1950-х годах
•Программы для компьютеров стали сложными и начали требовать больших затрат на создание и сопровождение
•Термин: Computers and Automation, 06.1965
•NATO Software Engineering Conference Garmish, Germany, 7-11.10.1968
•Признание как отдельной области науки
•Предполагалось, что в ходе развития будут выделены инженерная область и ее базовая фундаментальная основа
•Не получилось отделить фундаментальные основы, поскольку по своей природе ПО конструируемо и нематериально
•В качестве основ остались
-Computer Science (алгоритмы и структуры данных)
-Психофизиология взаимодействия человека и машины (построение интерфейсов)
-Team Dynamics (психология взаимодействие людей при совместной работе)
-Микроэкономика проектов (окупаемость и прибыльность работ)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
4 |
Отличия от Computer Science
Помимо указанных дополнительных аспектов
•Решается не одна четко сформулированная задача, а группа связанных, нечетких, связанных иногда с несколькими предметными областями
•Решение должно обеспечивать определенные характеристики при взаимодействии с реальными людьми на протяжении значительного времени
•Постановка задач изменяется со временем в связи с изменением потребностей людей
•Необходимо регулярное внесение изменений в полученное исходно решение
•Идеальное решение невозможно, всегда есть что улучшить
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
5 |
Программное обеспечение
В отличие от небольших программ
•Решает большую группу связанных, но сформулированных не очень четко задач
•Реализует полезные функции для неопределенной группы лиц (с достаточно определенными интересами) на протяжении значительного времени
Включает в себя не только код, но и всю документацию, необходимую для эксплуатации и развития (пользовательская документация, документация администратора, описания требований и проектных решений, наборы моделей и прототипов, тестовые наборы, и т.д.), а также недокументированные решения и идеи
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
6 |
Развитие программного обеспечения
бизнеса
Разработчики |
Развитие |
|
технологий |
||
|
||
|
разработки |
|
Работающая система |
Код |
Программное обеспечение
Связанные системы
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
7 |
Следствия
•Основной источник сложности ПО – долгосрочное развитие, зависимое от внешних факторов
•ПО – гибридная система
•Естественные системы (физика, химия, биология) – развиваются по некоторым законам природы
•Искусственные системы – создаются для какой-то цели на основе некоторых конструкторских решений
•Гибридные системы (языки, общества, ПО) – сочетают элементы конструктивных решений и естественного развития
•Для гибридных систем нет общих законов построения и развития, есть некоторые наборы паттернов/образцов, которые могут применяться в зависимости от контекста
•Для одной и той же цели могут использоваться несколько альтернативных паттернов с вариациями
•На конструкции таких систем влияют не только цели, но еще и «тренды», предшествующая история, конъюнктурные обстоятельства
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
8 |
Еще следствия
•Почти ни для чего нет универсальных решений в виде ПО
•Нужно одновременно решать массу связанных задач, зависящих от контекста использования
•Постановки задач изменяются со временем
•Практически полезные системы не могут быть абсолютно правильными
•Для большинства задач нет четких постановок
•Все задачи изменяются, так что даже полностью уточнив постановку, мы не получим окончательное решение
В практически полезном ПО всегда есть ошибки
•Их невозможно устранить полностью, но можно выявлять и убирать наиболее существенные в текущих обстоятельствах
•Попытка разработки полностью корректной системы экономически бессмысленна
•Но можно строить достаточно качественные системы
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
9 |
Основные принципы инженерии ПО
•Модульность
•Выделение модулей и их интерфейсов
•Абстракция и уточнение
•Отбрасывание/добавление деталей в постановке задач
•Повторное использование
•Однократная запись знаний и решений
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
10 |
