Download presentation
Presentation is loading. Please wait.
1
Microsoft Solutions Framework Технологии программирования. Курс на базе Microsoft Solutions Framework Лекция 2. Элементы программной инженерии
2
Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература
3
Содержание Вспоминая предыдущую лекцию Вместо введения. Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература
4
Вспоминая предыдущую лекцию Немного терминологии –Программирование –IT-проекты –Программы и программные продукты Бизнес и IT-проекты. Рынок ПО в России и в мире. Немного статистики Причины неудачи IT-проектов Технологии программирования – путь к успеху в разработке ПО
5
Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература
6
Вместо введения... Данная лекция основана на материалах Иана Соммервилля (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 с.
7
Вместо введения О целях настоящей лекции: Программная инженерия – сложная область. Полный фундаментальный курс будет прочитан позже. Наш курс – вводный. На этой лекции мы познакомимся с терминологией, немного затронем теорию, поговорим о проблемах. На других лекциях поговорим о практических подходах к решению рассмотренных проблем.
8
Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия –Инженеры и программные инженеры –Программная инженерия как инженерная дисциплина –Область действия программной инженерии –Цели программных инженеров –Программные инженеры и научная среда Процесс создания ПО Что дальше? Литература
9
Инженеры... Программная инженерия. Кто такие инженеры? Версии зала...
10
Инженеры... Инженер * (франц. ingénieur, от лат. ingenium – способность, изобретательность), Специалист с высшим техническим образованием. Первоначально – название лиц, управлявших военными машинами. * Источник: Большая Советская Энциклопедия.
11
Инженеры... Понятие гражданский инженер появилось в 16 в. в Голландии применительно к строителям мостов и дорог, затем в Англии и др. странах. Первые учебные заведения для подготовки инженеров были созданы в 17 в. в Дании, в 18 в. – в Великобритании, Франции, Германии, Австрии и др.
12
Инженеры В России первая инженерная школа основана Петром I в 1712 в Москве. В Петербурге были открыты Горное училище, приравненное к академиям (1773), Институт инженеров путей сообщения (1809), Училище гражданских инженеров (1832, с 1882 - Институт гражданских инженеров), Инженерная академия (1855). С 19 в. за рубежом стали различать инженеров- практиков, или профессиональных инженеров (по существу специалистов, имевших квалификацию техника), и дипломированных инженеров, получивших высшее техническое образование (Civil Engineer).
13
Программные инженеры Кто такие инженеры? Инженер – дипломированный специалист, имеющий высшее техническое образование. Кто такие программные инженеры? Программный инженер – инженер в области разработки программного обеспечения. Что такое программная инженерия (инженерия программного обеспечения, software engineering)?
14
Программная инженерия как инженерная дисциплина Программная инженерия – инженерная дисциплина, связанная с теорией, методами и средствами профессиональной разработки ПО. Говорили ранее: –ПО = программы + вся сопутствующая документация. –Высокая стоимость разработки ПО (выше, чем у аппаратуры). –Стоимость разработки растет. Программная инженерия способствует решению проблемы роста стоимости разработки ПО. Программная инженерия имеет дело со всеми аспектами создания ПО.
15
Область действия программной инженерии... В западной литературе часто используются термины: software engineering, system engineering и computer science. В чем разница? Computer science имеет дело с теорией и основами разработки ПО. System engineering связано с вопросами разработки систем с участием компьютеров (архитектура, дизайн, интеграция, ПО...). Software engineering – часть System engineering, имеющая дело с ПО.
16
Область действия программной инженерии Итак, computer science предоставляет теоретический базис. На практике его недостаточно. Открытые проблемы: –Поиск финансирования. –Работа с заказчиком. –Подбор персонала. –Этические вопросы. Микроклимат в коллективе. Команда. –Обеспечение качества программного продукта. –... Всем этим занимается программная инженерия.
17
Цели программных инженеров... Цели программных инженеров: –Создать качественный продукт. –Уложиться в бюджет. –Уложиться в сроки. Разберем эти вопросы подробнее.
18
Цели программных инженеров. Качественный программный продукт... Качественный программный продукт: –Должен представлять требуемую функциональность. –Быть удобным в сопровождении. –Быть надежным. –Быть эффективным. –Быть удобным в использовании.
19
Цели программных инженеров. Качественный программный продукт ПО должно быть качественным. Удобство в сопровождении: –ПО должно допускать развитие в связи с изменением потребностей пользователей. Надежность: –Возможные неполадки в работе не должны нанести существенный, тем более невосполнимый ущерб. Эффективность: –ПО должно эффективно использовать имеющиеся ресурсы. Удобство в использовании: –ПО должно приниматься пользователями «на ура», работа должна быть удобной и естественной.
20
Цели программных инженеров. Бюджет Создание ПО должно укладываться в бюджет. Типовое распределение средств: –60% – разработка. –40% – тестирование. –Развитие – зачастую больше, чем создание. Детали зависят от специфики предметной области, требований к ПО, используемых подходов к организации разработки.
21
Цели программных инженеров. Сроки Создание ПО должно укладываться в сроки. Необходимо грамотное планирование. Анализ возможных рисков и способы реагирования. Борьба за четкие границы проекта. Мотивирование сотрудников.
22
Программные инженеры и научная среда Взаимодействие с научной средой – один из способов повышения эффективности деятельности: –Новые технологии. –Новые методы, алгоритмы. –Анализ новых перспективных разработок. –Исследовательская работа в смежных областях. Помощь ученых: –Там где в принципе не решить задачу своими силами. –Там, где есть специалисты, но нет времени и ресурсов для исследований. Используется современными компаниями: Intel, Microsoft, IBM…
23
Резюме Мы узнали значение и смысл следующих понятий: Инженер. Программный инженер и программная инженерия. Цель программной инженерии. Качество, сроки, бюджет. Взаимодействие с научной средой.
24
Содержание Вспоминая предыдущую лекцию Вместо введения Программная инженерия, основные понятия Процесс создания ПО Что дальше? Литература
25
Процесс создания ПО Процесс создания ПО – совокупность мероприятий, целью которых является создание или модернизация ПО. Выделяют 4 основных мероприятия (стадии): –Спецификация: формулирование спецификаций определяет основные требования к ПО (что должна делать система). –Разработка: создание ПО в соответствии со спецификациями. –Аттестация: проверка ПО на соответствие потребностям заказчика. –Модернизация: развитие ПО в соответствии с изменившимися потребностями заказчика.
26
Стадии процесса создания ПО Спецификация Разработка Аттестация Модернизация
27
Процесс создания ПО... Все стадии основаны на специальных технологиях. Например, Модульное, Структурное, Объектно- ориентированное, Компонентное программирование относятся к стадии Реализации. Каждая организация может использовать свой Процесс разработки. Этот процесс может иметь разную степень формализации. Чем больше, тем лучше – не всегда работает. Чем больше и сложнее проект, тем важнее степень формализации.
28
Процесс создания ПО... Каким бы ни был процесс, перечисленные 4 стадии как правило в нем присутствуют. Они могут иначе называться, дробиться, но от них никуда не уйти. Существуют хорошо проработанные процессы: –Microsoft Solutions Framework (MSF) –Rational Unified Process (RUP) Эти процессы (методологии) могут иметь редакции для малых компаний и проектов, средних, больших.
29
Процесс создания ПО Итак, некий «каркас» процесса: –Спецификация –Разработка –Аттестация –Модернизация От «каркаса» можно пойти вглубь – существенно проработанные процессы (MSF, RUP…) Сам «каркас» можно приводить в жизнь по- разному. Существуют общие модели процесса, которые определяют, как работать по «каркасу» на практике.
30
Модели процесса Классические модели процесса разработки ПО: –Каскадная модель (Waterfall model) фазы выполняются по порядку –Эволюционная модель (Evolutionary development) фазы выполняются по порядку, процесс повторяется
31
Каскадная модель... Каскадная модель: Проектирование Кодирование Тестирование модулей Интеграция тестирование Эксплуатация Сопровождение Определение требований
32
Каскадная модель Каскадная модель: –Фиксированный набор стадий –Каждая стадия -> законченный результат –Стадия начинается, когда закончилась предыдущая. Недостатки: негибкость –фаза д.б. закончена, прежде чем приступить к следующей –Набор фаз фиксирован –Тяжело реагировать на изменения требований Использование: там, где требования хорошо понятны и стабильны.
33
Эволюционная модель Эволюционная модель: –Стадии повторяются неоднократно. Сначала для плохо сформулированных требований выполняется весь цикл работ по созданию работающего прототипа. Потом уточняются требования и все повторяется... На выходе – продукт, отвечающий потребностям пользователей. –Недостатки: Система часто плохо структурирована Проект «не прозрачен» Требуются средства для быстрой разработки Подходит для малых и средних проектов
34
Итерационный подход Часто подходы, перечисленные ранее, используется в совокупности. Требования всегда меняются в ходе разработки. К каждой из предыдущих моделей можно применить итерации. Следовательно, важна возможность выполнения итераций, результатом которых является прототип продукта с частичной функциональностью. Это достигается в итерационных моделях. –Модель пошаговой разработки –Спиральная модель разработки
35
Модель пошаговой разработки Модель пошаговой разработки (Миллс): Шаги. Каждый шаг – работающий прототип. Наиболее важные для заказчика компоненты – в начале. Требования фиксированы во время шага. Для шага можно применять каскадную или эволюционную модель. Одно из ответвлений – Экстремальное программирование. План требований Детализация требований Архитектура системы Шаг разработкиШаг аттестацииШаг сборки Аттестация системы СИСТЕМА Система не готова
36
Спиральная модель Спиральная модель (Боэм): Вместо действий с обратной связью – спираль. Каждый виток спирали соответствует 1 итерации. Нет заранее фиксированных фаз. В зависимости от потребностей. Каждый виток разбит на 4 сектора: –Определение целей –Оценка и разрешение рисков –Разработка и тестирование –Планирование Главное отличие: акцент на анализ и преодоление рисков. На каждом витке могут применяться разные модели процесса разработки ПО.
37
Что дальше? Следующая тема: Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML). Следующая тема: Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).
38
Литература к лекции 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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.