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

Post on 21-Mar-2016

87 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Курс на базе 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.

top related