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

Презентация:



Advertisements
Похожие презентации
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
Advertisements

Разработка программного обеспечения (Software Engineering) Часть 1. Введение.
Microsoft Solutions Framework Технологии программирования. Курс на базе Microsoft Solutions Framework Лекция 1. Введение.
SOFTWARE DEVELOPMENT PODGOTOVIL TVOU ZHOPY K SDACHE.
Дисциплина «Технология разработки программного обеспечения» тема « Стадии и модели жизненного цикла программного продукта »
Жизненный цикл информационной системы - Понятие 2 - Стадии 3 - Процессы 4 - Модели 6.
Цикл жизни ПО Методологии разработки 8 октября 2008 г. 4 курс Технологии программирования.
Лекция 4 Жизненный цикл программного обеспечения информационных систем УЧЕБНЫЕ ВОПРОСЫ: УЧЕБНЫЕ ВОПРОСЫ: 1. информационных систем 1. Модели жизненного.
МОДЕЛИ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ Студент: Ермолович И.С. Группа: ИТ-33.
11. Процесс разработки программной системы Последовательный и итеративный процессы разработки Процесс разработки программной системы является бизнес.
Лекция 4 Жизненный цикл программного обеспечения информационных систем УЧЕБНЫЕ ВОПРОСЫ: УЧЕБНЫЕ ВОПРОСЫ: 1. информационных систем 1. Модели жизненного.
Информационные системы Что такое ИС? Функции ИС Жизненные циклы ИС: Понятия Процессы Стадии Модели Основные способы построения ИС.
Дисциплина «Технология разработки программного обеспечения» Тема 1 « Основы разработки Тема 1 « Основы разработки программного продукта » программного.
Лекция 1 Учебные вопросы : Вопрос 1. История возникновения и понятие CASE- технологии. Вопрос 2. Особенности внедрения CASE- технологии. Вопрос 3. Основные.
Жизненный цикл ИС период создания и использования информационных систем, начиная с момента возникновения необходимости в данной информационной системы.
Положение об отделе В.Андреев, Д.Сатин. Штат отдела начальник отдела; бизнес-аналитик; проектировщик пользовательских интерфейсов; специалист по анализу.
СИСТЕМНЫЙ ИНЖИНИРИНГ 1. Со второй половины 20 века существенно возросла сложность проектируемых объектов и характер их воздействие на общество и на окружающую.
Учебный курс Модели жизненного цикла и методологии разработки корпоративных систем Лекция 5 Методологии разработки корпоративных систем Лекции читает кандидат.
Учебный курс «Технологии программирования. Курс на базе Microsoft Solutions Framework (MSF)» Нижегородский государственный университет им. Н.И. Лобачевского.
Методология проектирования RAD МДК Раздел 1.
Транксрипт:

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

Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература

Содержание Вспоминая предыдущую лекцию Вместо введения. Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература

Вспоминая предыдущую лекцию Немного терминологии –Программирование –IT-проекты –Программы и программные продукты Бизнес и IT-проекты. Рынок ПО в России и в мире. Немного статистики Причины неудачи IT-проектов Технологии программирования – путь к успеху в разработке ПО

Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература

Вместо введения... Данная лекция основана на материалах Иана Соммервилля (Ian Sommerville). Источник (англ.): Ian Sommerville. Software Engineering. 6th Edition. Ian Sommerville. Software Engineering. 7th Edition. Источник на русском языке: Иан Соммервиль. Инженерия программного обеспечения. 6 изд, и.д. "Вильямс", с.

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

Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия –Инженеры и программные инженеры –Программная инженерия как инженерная дисциплина –Область действия программной инженерии –Цели программных инженеров –Программные инженеры и научная среда Процесс создания ПО Что дальше? Литература

Инженеры... Программная инженерия. Кто такие инженеры? Версии зала...

Инженеры... Инженер * (франц. ingénieur, от лат. ingenium – способность, изобретательность), Специалист с высшим техническим образованием. Первоначально – название лиц, управлявших военными машинами. * Источник: Большая Советская Энциклопедия.

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

Инженеры В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с Институт гражданских инженеров), Инженерная академия (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 Language (UML). Следующая тема: Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).

Литература к лекции 1.И. Соммервиль. Инженерия программного обеспечения, 6 изд. – И.д. "Вильямс", Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. – Бином, N. Wirth. Program Development by Stepwise Refinement // Communications of the ACM vol.26(1).– 1971, O. Dahl, E. Dijkstra, C.A.R. Hoare. Structured Programming.–London, England: Academic Press, Р. Лингер, Х. Миллс, Б. Уитт. Теория и практика структурного программирования. – М.: Мир, Э. Салливан. Время – деньги. – М.:Microsoft Press, Русская редакция, 2002.