Технологии программирования. Курс на базе microsoft solutions...
DESCRIPTION
Технологии программирования. Курс на базе Microsoft Solutions Framework. Лекция 2 . Элементы программной инженерии. Содержание. Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше ? Литература. Содержание. - PowerPoint PPT PresentationTRANSCRIPT
Технологии программирования.
Курс на базе Microsoft Solutions Microsoft Solutions
FrameworkFramework
Лекция 2.Элементы программной инженерии
Содержание
• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные
понятия• Процесс создания ПО• Что дальше?• Литература
Содержание
• Вспоминая предыдущую лекцию• Вместо введения.• Программная инженерия, основные
понятия• Процесс создания ПО• Что дальше?• Литература
Вспоминая предыдущую лекцию
• Немного терминологии– Программирование– IT-проекты– Программы и программные продукты
• Бизнес и IT-проекты. Рынок ПО в России и в мире. Немного статистики
• Причины неудачи IT-проектов• Технологии программирования – путь к успеху
в разработке ПО
Содержание
• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные
понятия• Процесс создания ПО• Что дальше?• Литература
Вместо введения...
Данная лекция основана на материалах Иана Соммервилля (Ian Sommerville).
Источник (англ.):•http://www.comp.lancs.ac.uk/computing/resources/IanS/SE6Ian Sommerville. Software Engineering. 6th Edition.•http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7Ian Sommerville. Software Engineering. 7th Edition.
Источник на русском языке:Иан Соммервиль. Инженерия программного обеспечения.
6 изд, и.д. "Вильямс", 2002. — 624 с.
Вместо введения
О целях настоящей лекции:• Программная инженерия – сложная область.• Полный фундаментальный курс будет
прочитан позже.• Наш курс – вводный. На этой лекции мы
познакомимся с терминологией, немного затронем теорию, поговорим о проблемах.
• На других лекциях поговорим о практических подходах к решению рассмотренных проблем.
Содержание• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные понятия
– Инженеры и программные инженеры– Программная инженерия как инженерная
дисциплина– Область действия программной инженерии– Цели программных инженеров– Программные инженеры и научная среда
• Процесс создания ПО• Что дальше?• Литература
Инженеры...
• Программная инженерия.
Кто такие Кто такие инженерыинженеры??
Версии зала...
Инженеры...
Инженер *
(франц. ingénieur, от лат. ingenium – способность, изобретательность),
• Специалист с высшим техническим образованием.
• Первоначально – название лиц, управлявших военными машинами.
* Источник: Большая Советская Энциклопедия.
Инженеры...
• Понятие гражданский инженер появилось в 16 в. в Голландии применительно к строителям мостов и дорог, затем в Англии и др. странах.
• Первые учебные заведения для подготовки инженеров были созданы в 17 в. в Дании, в 18 в. – в Великобритании, Франции, Германии, Австрии и др.
Инженеры
• В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с 1882 - Институт гражданских инженеров), Инженерная академия (1855).
• С 19 в. за рубежом стали различать инженеров-практиков, или профессиональных инженеров (по существу специалистов, имевших квалификацию техника), и дипломированных инженеров, получивших высшее техническое образование (Civil Engineer).
Программные инженеры
• Кто такие инженеры?• Инженер – дипломированный специалист,
имеющий высшее техническое образование.• Кто такие программные инженеры?• Программный инженер – инженер в области
разработки программного обеспечения.• Что такое программная инженерия
(инженерия программного обеспечения, 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 LanguageUnified Modeling Language (UML). (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.