380 likes | 605 Views
Технологии программирования. Курс на базе Microsoft Solutions Framework. Лекция 2 . Элементы программной инженерии. Содержание. Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше ? Литература. Содержание.
E N D
Технологии программирования. Курс на базе 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), Институт инженеров путей сообщения (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 Language (UML).
Литература к лекции • И. Соммервиль. Инженерия программного обеспечения, 6 изд. – И.д. "Вильямс", 2002. • Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второеиздание. – Бином, 1998. • N. Wirth. Program Development by Stepwise Refinement // Communications of the ACM vol.26(1).– 1971, 1983. • O. Dahl, E. Dijkstra, C.A.R. Hoare. Structured Programming.–London, England: Academic Press, 1972. • Р. Лингер, Х. Миллс, Б. Уитт. Теория и практика структурного программирования. – М.: Мир, 1982. • Э. Салливан. Время – деньги. – М.:Microsoft Press, Русская редакция, 2002.