Технологии программирования. Курс на базе microsoft solutions...

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

Upload: judah

Post on 21-Mar-2016

87 views

Category:

Documents


0 download

DESCRIPTION

Технологии программирования. Курс на базе Microsoft Solutions Framework. Лекция 2 . Элементы программной инженерии. Содержание. Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше ? Литература. Содержание. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Технологии программирования.

Курс на базе Microsoft Solutions Microsoft Solutions

FrameworkFramework

Лекция 2.Элементы программной инженерии

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

Содержание

• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные

понятия• Процесс создания ПО• Что дальше?• Литература

Page 3: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Содержание

• Вспоминая предыдущую лекцию• Вместо введения.• Программная инженерия, основные

понятия• Процесс создания ПО• Что дальше?• Литература

Page 4: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Вспоминая предыдущую лекцию

• Немного терминологии– Программирование– IT-проекты– Программы и программные продукты

• Бизнес и IT-проекты. Рынок ПО в России и в мире. Немного статистики

• Причины неудачи IT-проектов• Технологии программирования – путь к успеху

в разработке ПО

Page 5: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Содержание

• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные

понятия• Процесс создания ПО• Что дальше?• Литература

Page 6: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Вместо введения...

Данная лекция основана на материалах Иана Соммервилля (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 с.

Page 7: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Вместо введения

О целях настоящей лекции:• Программная инженерия – сложная область.• Полный фундаментальный курс будет

прочитан позже.• Наш курс – вводный. На этой лекции мы

познакомимся с терминологией, немного затронем теорию, поговорим о проблемах.

• На других лекциях поговорим о практических подходах к решению рассмотренных проблем.

Page 8: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Содержание• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные понятия

– Инженеры и программные инженеры– Программная инженерия как инженерная

дисциплина– Область действия программной инженерии– Цели программных инженеров– Программные инженеры и научная среда

• Процесс создания ПО• Что дальше?• Литература

Page 9: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Инженеры...

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

Кто такие Кто такие инженерыинженеры??

Версии зала...

Page 10: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Инженеры...

Инженер *

(франц. ingénieur, от лат. ingenium – способность, изобретательность),

• Специалист с высшим техническим образованием.

• Первоначально – название лиц, управлявших военными машинами.

* Источник: Большая Советская Энциклопедия.

Page 11: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Инженеры...

• Понятие гражданский инженер появилось в 16 в. в Голландии применительно к строителям мостов и дорог, затем в Англии и др. странах.

• Первые учебные заведения для подготовки инженеров были созданы в 17 в. в Дании, в 18 в. – в Великобритании, Франции, Германии, Австрии и др.

Page 12: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Инженеры

• В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с 1882 - Институт гражданских инженеров), Инженерная академия (1855).

• С 19 в. за рубежом стали различать инженеров-практиков, или профессиональных инженеров (по существу специалистов, имевших квалификацию техника), и дипломированных инженеров, получивших высшее техническое образование (Civil Engineer).

Page 13: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

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

• Кто такие инженеры?• Инженер – дипломированный специалист,

имеющий высшее техническое образование.• Кто такие программные инженеры?• Программный инженер – инженер в области

разработки программного обеспечения.• Что такое программная инженерия

(инженерия программного обеспечения, software engineering)?

Page 14: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Программная инженерия как инженерная дисциплина

• Программная инженерия – инженерная дисциплина, связанная с теорией, методами и средствами профессиональной разработки ПО.

• Говорили ранее:– ПО = программы + вся сопутствующая документация.– Высокая стоимость разработки ПО (выше, чем у

аппаратуры).– Стоимость разработки растет.

• Программная инженерия способствует решению проблемы роста стоимости разработки ПО.

• Программная инженерия имеет дело со всеми аспектами создания ПО.

Page 15: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Область действия программной инженерии...

• В западной литературе часто используются термины: software engineering, system engineering и computer science. В чем разница?

• Computer science имеет дело с теорией и основами разработки ПО.

• System engineering связано с вопросами разработки систем с участием компьютеров (архитектура, дизайн, интеграция, ПО...).

• Software engineering – часть System engineering, имеющая дело с ПО.

Page 16: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Область действия программной инженерии

•Итак, computer science предоставляет теоретический базис. На практике его недостаточно. Открытые проблемы:

– Поиск финансирования.– Работа с заказчиком.– Подбор персонала.– Этические вопросы. Микроклимат в

коллективе. Команда.– Обеспечение качества программного

продукта.– ...

•Всем этим занимается программная инженерия.

Page 17: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Цели программных инженеров...

• Цели программных инженеров:– Создать качественный продукт.– Уложиться в бюджет.– Уложиться в сроки.

• Разберем эти вопросы подробнее.

Page 18: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Цели программных инженеров. Качественный программный

продукт...Качественный программный продукт:

– Должен представлять требуемую функциональность.

– Быть удобным в сопровождении.– Быть надежным.– Быть эффективным.– Быть удобным в использовании.

Page 19: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Цели программных инженеров. Качественный программный

продукт• ПО должно быть качественным.• Удобство в сопровождении:

– ПО должно допускать развитие в связи с изменением потребностей пользователей.

• Надежность:– Возможные неполадки в работе не должны нанести

существенный, тем более невосполнимый ущерб.• Эффективность:

– ПО должно эффективно использовать имеющиеся ресурсы.

• Удобство в использовании:– ПО должно приниматься пользователями «на ура»,

работа должна быть удобной и естественной.

Page 20: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Цели программных инженеров. Бюджет

Создание ПО должно укладываться в бюджет.

•Типовое распределение средств:– 60% – разработка.– 40% – тестирование.– Развитие – зачастую больше, чем создание.

•Детали зависят от специфики предметной области, требований к ПО, используемых подходов к организации разработки.

Page 21: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Цели программных инженеров. Сроки

Создание ПО должно укладываться в сроки.

• Необходимо грамотное планирование.• Анализ возможных рисков и способы

реагирования.• Борьба за четкие границы проекта.• Мотивирование сотрудников.

Page 22: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Программные инженеры и научная среда

• Взаимодействие с научной средой – один из способов повышения эффективности деятельности:– Новые технологии.– Новые методы, алгоритмы.– Анализ новых перспективных разработок.– Исследовательская работа в смежных областях.

• Помощь ученых:– Там где в принципе не решить задачу своими силами.– Там, где есть специалисты, но нет времени и ресурсов

для исследований.• Используется современными компаниями:

Intel, Microsoft, IBM…

Page 23: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Резюме

Мы узнали значение и смысл следующих понятий:

•Инженер.•Программный инженер и программная

инженерия.•Цель программной инженерии.•Качество, сроки, бюджет.•Взаимодействие с научной средой.

Page 24: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Содержание

• Вспоминая предыдущую лекцию• Вместо введения• Программная инженерия, основные

понятия• Процесс создания ПО• Что дальше?• Литература

Page 25: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Процесс создания ПО

• Процесс создания ПО – совокупность мероприятий, целью которых является создание или модернизация ПО.

• Выделяют 4 основных мероприятия (стадии):– Спецификация: формулирование спецификаций

определяет основные требования к ПО (что должна делать система).

– Разработка: создание ПО в соответствии со спецификациями.

– Аттестация: проверка ПО на соответствие потребностям заказчика.

– Модернизация: развитие ПО в соответствии с изменившимися потребностями заказчика.

Page 26: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Стадии процесса создания ПО

Спецификация

Разработка

Аттестация

Модернизация

Page 27: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Процесс создания ПО...

• Все стадии основаны на специальных технологиях.

• Например, Модульное, Структурное, Объектно-ориентированное, Компонентное программирование относятся к стадии Реализации.

• Каждая организация может использовать свой Процесс разработки. Этот процесс может иметь разную степень формализации. Чем больше, тем лучше – не всегда работает.

• Чем больше и сложнее проект, тем важнее степень формализации.

Page 28: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Процесс создания ПО...

• Каким бы ни был процесс, перечисленные 4 стадии как правило в нем присутствуют. Они могут иначе называться, дробиться, но от них никуда не уйти.

• Существуют хорошо проработанные процессы:– Microsoft Solutions Framework (MSF)– Rational Unified Process (RUP)

• Эти процессы (методологии) могут иметь редакции для малых компаний и проектов, средних, больших.

Page 29: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Процесс создания ПО

• Итак, некий «каркас» процесса:– Спецификация– Разработка– Аттестация– Модернизация

• От «каркаса» можно пойти вглубь –существенно проработанные процессы (MSF, RUP…)

• Сам «каркас» можно приводить в жизнь по-разному. Существуют общие модели процесса, которые определяют, как работать по «каркасу» на практике.

Page 30: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Модели процесса

Классические модели процесса разработки ПО:– Каскадная модель (Waterfall model)

фазы выполняются по порядку– Эволюционная модель (Evolutionary

development)фазы выполняются по порядку, процесс

повторяется

Page 31: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Каскадная модель...

Каскадная модель:

Проектирование

КодированиеТестирование модулей

Интеграция тестирование

ЭксплуатацияСопровождение

Определение требований

Page 32: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Каскадная модель

• Каскадная модель:– Фиксированный набор стадий– Каждая стадия -> законченный результат– Стадия начинается, когда закончилась

предыдущая.• Недостатки: негибкость

– фаза д.б. закончена, прежде чем приступить к следующей

– Набор фаз фиксирован– Тяжело реагировать на изменения

требований• Использование: там, где требования

хорошо понятны и стабильны.

Page 33: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Эволюционная модель

Эволюционная модель:– Стадии повторяются неоднократно.

Сначала для плохо сформулированных требований выполняется весь цикл работ по созданию работающего прототипа. Потом уточняются требования и все повторяется... На выходе – продукт, отвечающий потребностям пользователей.

– Недостатки: • Система часто плохо структурирована• Проект «не прозрачен»• Требуются средства для быстрой разработки• Подходит для малых и средних проектов

Page 34: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Итерационный подход

• Часто подходы, перечисленные ранее, используется в совокупности.

• Требования всегда меняются в ходе разработки.• К каждой из предыдущих моделей можно применить

итерации.• Следовательно, важна возможность выполнения

итераций, результатом которых является прототип продукта с частичной функциональностью.

• Это достигается в итерационных моделях.– Модель пошаговой разработки– Спиральная модель разработки

Page 35: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Модель пошаговой разработкиМодель пошаговой разработки (Миллс):• Шаги. Каждый шаг – работающий прототип.• Наиболее важные для заказчика компоненты – в начале.• Требования фиксированы во время шага.• Для шага можно применять каскадную или эволюционную модель.• Одно из ответвлений – Экстремальное программирование.

План требований Детализация требований

Архитектура системы

Шаг разработки Шаг аттестации Шаг сборки

Аттестация системы СИСТЕМА

Система не готова

Page 36: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Спиральная модельСпиральная модель (Боэм):• Вместо действий с обратной связью – спираль.• Каждый виток спирали соответствует 1 итерации.• Нет заранее фиксированных фаз. В зависимости от

потребностей.• Каждый виток разбит на 4 сектора:

– Определение целей– Оценка и разрешение рисков– Разработка и тестирование– Планирование

• Главное отличие: акцент на анализ и преодоление рисков.

• На каждом витке могут применяться разные модели процесса разработки ПО.

Page 37: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Что дальше?

Следующая тема:Визуальное моделирование при анализе и Визуальное моделирование при анализе и проектировании. проектировании. Основы Основы Unified Modeling LanguageUnified Modeling Language (UML). (UML).

Page 38: Технологии программирования.  Курс на базе  Microsoft Solutions Framework

Литература к лекции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.