Технологии программирования. Курс на базе Microsoft Solutions Framework Лекция 2.

advertisement
Технологии программирования.
Курс на базе
Microsoft Solutions Framework
Лекция 2.
Элементы
программной
инженерии
Содержание
•
Вспоминая предыдущую лекцию
•
Вместо введения
•
Программная инженерия, основные
понятия
•
Процесс создания ПО
•
Что дальше?
•
Литература
Содержание
•
Вспоминая предыдущую лекцию
•
Вместо введения.
•
Программная инженерия, основные
понятия
•
Процесс создания ПО
•
Что дальше?
•
Литература
Вспоминая предыдущую лекцию
• Немного терминологии
– Программирование
– IT-проекты
– Программы и программные продукты
• Бизнес и IT-проекты. Рынок ПО в России и в
мире. Немного статистики
• Причины неудачи IT-проектов
• Технологии программирования – путь к успеху
в разработке ПО
Содержание
•
Вспоминая предыдущую лекцию
•
Вместо введения
•
Программная инженерия, основные
понятия
•
Процесс создания ПО
•
Что дальше?
•
Литература
Вместо введения...
Данная лекция основана на материалах
Иана Соммервилля (Ian Sommerville).
Источник (англ.):
•
http://www.comp.lancs.ac.uk/computing/resources/IanS/SE6
Ian Sommerville. Software Engineering. 6th Edition.
•
http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7
Ian Sommerville. Software Engineering. 7th Edition.
Источник на русском языке:
Иан
Соммервиль.
Инженерия
программного
обеспечения.
6 изд, и.д. "Вильямс", 2002. — 624 с.
Вместо введения
О целях настоящей лекции:
• Программная
область.
инженерия
• Полный
фундаментальный
прочитан позже.
–
курс
сложная
будет
• Наш курс – вводный. На этой лекции мы
познакомимся
с
терминологией,
немного
затронем теорию, поговорим о проблемах.
• На других лекциях поговорим о практических
подходах к решению рассмотренных проблем.
Содержание
•
Вспоминая предыдущую лекцию
•
Вместо введения
•
Программная инженерия, основные понятия
–
Инженеры и программные инженеры
–
Программная инженерия как инженерная
дисциплина
–
Область действия программной инженерии
–
Цели программных инженеров
–
Программные инженеры и научная среда
•
Процесс создания ПО
•
Что дальше?
•
Литература
Инженеры...
• Программная инженерия.
Кто такие
инженеры?
Версии зала...
Инженеры...
Инженер
*
(франц. ingénieur, от лат. ingenium
способность, изобретательность),
• Специалист с
образованием.
высшим
–
техническим
• Первоначально
–
название
лиц,
управлявших военными машинами.
* Источник: Большая Советская Энциклопедия.
Инженеры...
• Понятие гражданский инженер появилось в
16
в.
в
Голландии
применительно
к
строителям мостов и дорог, затем в Англии и
др. странах.
• Первые учебные заведения для подготовки
инженеров были созданы в 17 в. в Дании, в
18
в.
–
в
Великобритании,
Германии, Австрии и др.
Франции,
Инженеры
• В России первая инженерная школа основана Петром I
в 1712 в Москве. В Петербурге были открыты Горное
училище, приравненное к академиям (1773), Институт
инженеров
путей
сообщения
гражданских
инженеров
(1832,
(1809),
с
1882
Училище
-
Институт
гражданских инженеров), Инженерная академия (1855).
• С 19 в. за рубежом стали различать инженеровпрактиков,
существу
или
профессиональных
специалистов,
техника),
и
получивших
высшее
Engineer).
имевших
дипломированных
техническое
инженеров
(по
квалификацию
инженеров,
образование
(Civil
Программные инженеры
• Кто такие инженеры?
• Инженер
–
дипломированный
специалист,
имеющий высшее техническое образование.
• Кто такие программные инженеры?
• Программный инженер – инженер в области
разработки программного обеспечения.
• Что
такое
программная
инженерия
(инженерия
программного
обеспечения,
software engineering)?
Программная инженерия как
инженерная дисциплина
• Программная инженерия – инженерная дисциплина,
связанная
с
теорией,
методами
и
средствами
профессиональной разработки ПО.
• Говорили ранее:
– ПО = программы + вся сопутствующая документация.
– Высокая стоимость
аппаратуры).
разработки
ПО
(выше,
чем
у
– Стоимость разработки растет.
• Программная
инженерия
способствует
решению
проблемы роста стоимости разработки ПО.
• Программная инженерия имеет дело со всеми аспектами
создания ПО.
Область действия
программной инженерии...
• В западной литературе часто используются
термины: software engineering, system
engineering и computer science. В чем
разница?
• Computer science имеет дело с теорией и
основами разработки ПО.
• System engineering связано с вопросами
разработки систем с участием компьютеров
(архитектура, дизайн, интеграция, ПО...).
• Software
engineering
–
часть
System
engineering, имеющая дело с ПО.
Область действия
программной инженерии
• Итак,
computer
science
предоставляет
теоретический
базис.
На
практике
его
недостаточно. Открытые проблемы:
– Поиск финансирования.
– Работа с заказчиком.
– Подбор персонала.
– Этические
вопросы.
Микроклимат
в
коллективе. Команда.
– Обеспечение
качества
программного
продукта.
– ...
• Всем этим занимается программная инженерия.
Цели программных инженеров...
• Цели программных инженеров:
– Создать качественный продукт.
– Уложиться в бюджет.
– Уложиться в сроки.
• Разберем эти вопросы подробнее.
Цели программных инженеров.
Качественный программный продукт...
Качественный программный продукт:
– Должен представлять требуемую
функциональность.
– Быть удобным в сопровождении.
– Быть надежным.
– Быть эффективным.
– Быть удобным в использовании.
Цели программных инженеров.
Качественный программный продукт
• ПО должно быть качественным.
• Удобство в сопровождении:
– ПО должно допускать развитие в связи с изменением
потребностей пользователей.
• Надежность:
– Возможные неполадки в работе не должны нанести
существенный, тем более невосполнимый ущерб.
• Эффективность:
– ПО должно эффективно использовать имеющиеся
ресурсы.
• Удобство в использовании:
– ПО должно приниматься пользователями «на ура»,
работа должна быть удобной и естественной.
Цели программных инженеров.
Бюджет
Создание ПО должно укладываться в
бюджет.
• Типовое распределение средств:
– 60% – разработка.
– 40% – тестирование.
– Развитие – зачастую больше, чем создание.
• Детали зависят от специфики предметной
области, требований к ПО, используемых
подходов к организации разработки.
Цели программных инженеров.
Сроки
Создание ПО должно укладываться в сроки.
• Необходимо грамотное планирование.
• Анализ возможных рисков и способы
реагирования.
• Борьба за четкие границы проекта.
• Мотивирование сотрудников.
Программные инженеры и
научная среда
• Взаимодействие с научной средой – один из
способов повышения эффективности
деятельности:
–
–
–
–
Новые технологии.
Новые методы, алгоритмы.
Анализ новых перспективных разработок.
Исследовательская работа в смежных областях.
• Помощь ученых:
– Там где в принципе не решить задачу своими силами.
– Там, где есть специалисты, но нет времени и ресурсов
для исследований.
• Используется современными компаниями:
Intel, Microsoft, IBM…
Резюме
Мы узнали значение и смысл следующих
понятий:
• Инженер.
• Программный
инженер
и
инженерия.
• Цель программной инженерии.
• Качество, сроки, бюджет.
• Взаимодействие с научной средой.
программная
Содержание
•
Вспоминая предыдущую лекцию
•
Вместо введения
•
Программная инженерия, основные
понятия
•
Процесс создания ПО
•
Что дальше?
•
Литература
Процесс создания ПО
• Процесс создания ПО – совокупность
мероприятий,
целью
которых
является
создание или модернизация ПО.
• Выделяют 4 основных мероприятия (стадии):
– Спецификация:
формулирование
спецификаций
определяет основные требования к ПО (что должна
делать система).
– Разработка: создание ПО в соответствии со
спецификациями.
– Аттестация:
проверка
ПО
на
соответствие
потребностям заказчика.
– Модернизация: развитие ПО в соответствии с
изменившимися потребностями заказчика.
Стадии процесса создания ПО
Спецификация
Разработка
Аттестация
Модернизация
Процесс создания ПО...
• Все стадии основаны на специальных
технологиях.
• Например, Модульное, Структурное, Объектноориентированное, Компонентное
программирование относятся к стадии
Реализации.
• Каждая организация может использовать свой
Процесс разработки. Этот процесс может
иметь разную степень формализации. Чем
больше, тем лучше – не всегда работает.
• Чем больше и сложнее проект, тем важнее
степень формализации.
Процесс создания ПО...
• Каким бы ни был процесс, перечисленные
4 стадии как правило в нем присутствуют. Они
могут иначе называться, дробиться, но от них
никуда не уйти.
• Существуют хорошо проработанные процессы:
– Microsoft Solutions Framework (MSF)
– Rational Unified Process (RUP)
• Эти процессы (методологии) могут иметь
редакции для малых компаний и проектов,
средних, больших.
Процесс создания ПО
• Итак, некий «каркас» процесса:
–
–
–
–
Спецификация
Разработка
Аттестация
Модернизация
• От «каркаса» можно пойти вглубь –
существенно проработанные процессы (MSF,
RUP…)
• Сам «каркас» можно приводить в жизнь поразному. Существуют общие модели
процесса, которые определяют, как работать
по «каркасу» на практике.
Модели процесса
Классические модели процесса
разработки ПО:
– Каскадная модель (Waterfall model)
фазы выполняются по порядку
– Эволюционная модель (Evolutionary
development)
фазы выполняются по порядку, процесс
повторяется
Каскадная модель...
Каскадная модель:
Определение
требований
Проектирование
Кодирование
Тестирование модулей
Интеграция
тестирование
Эксплуатация
Сопровождение
Каскадная модель
• Каскадная модель:
– Фиксированный набор стадий
– Каждая стадия -> законченный результат
– Стадия начинается, когда закончилась
предыдущая.
• Недостатки: негибкость
– фаза д.б. закончена, прежде чем приступить
к следующей
– Набор фаз фиксирован
– Тяжело реагировать на изменения
требований
• Использование: там, где требования
хорошо понятны и стабильны.
Эволюционная модель
Эволюционная модель:
– Стадии повторяются неоднократно.
Сначала
для
плохо
сформулированных
требований
выполняется весь цикл работ по созданию работающего
прототипа.
Потом
повторяется...
На
уточняются
выходе
–
требования
продукт,
потребностям пользователей.
– Недостатки:
• Система часто плохо структурирована
• Проект «не прозрачен»
• Требуются средства для быстрой разработки
• Подходит для малых и средних проектов
и
все
отвечающий
Итерационный подход
• Часто подходы, перечисленные ранее, используется в
совокупности.
• Требования всегда меняются в ходе разработки.
• К каждой из предыдущих моделей можно применить
итерации.
• Следовательно, важна возможность выполнения
итераций, результатом которых является прототип
продукта с частичной функциональностью.
• Это достигается в итерационных моделях.
– Модель пошаговой разработки
– Спиральная модель разработки
Модель пошаговой разработки
Модель пошаговой разработки (Миллс):
• Шаги. Каждый шаг – работающий прототип.
• Наиболее важные для заказчика компоненты – в начале.
• Требования фиксированы во время шага.
• Для шага можно применять каскадную или эволюционную
модель.
• Одно из ответвлений – Экстремальное программирование.
План требований
Шаг разработки
Детализация
требований
Архитектура
системы
Шаг аттестации
Система не готова
Аттестация
системы
Шаг сборки
СИСТЕМА
Спиральная модель
Спиральная модель (Боэм):
• Вместо действий с обратной связью – спираль.
• Каждый виток спирали соответствует 1 итерации.
• Нет заранее фиксированных фаз. В зависимости от
потребностей.
• Каждый виток разбит на 4 сектора:
–
–
–
–
Определение целей
Оценка и разрешение рисков
Разработка и тестирование
Планирование
• Главное отличие: акцент на анализ и преодоление
рисков.
• На каждом витке могут применяться разные модели
процесса разработки ПО.
Что дальше?
Следующая тема:
Визуальное моделирование при анализе и
проектировании.
Основы Unified Modeling Language (UML).
Литература к лекции
1. И. Соммервиль. Инженерия программного
обеспечения, 6 изд. – И.д. "Вильямс", 2002.
2. Г. Буч. Объектно-ориентированный анализ и
проектирование с примерами приложений на C++.
Второе издание. – Бином, 1998.
3. N. Wirth. Program Development by Stepwise Refinement
// Communications of the ACM vol.26(1).– 1971, 1983.
4. O. Dahl, E. Dijkstra, C.A.R. Hoare. Structured
Programming.–London, England: Academic Press, 1972.
5. Р. Лингер, Х. Миллс, Б. Уитт. Теория и практика
структурного программирования. – М.: Мир, 1982.
6. Э. Салливан. Время – деньги. – М.:Microsoft Press,
Русская редакция, 2002.
Download