1 / 38

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

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

judah
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Технологии программирования. Курс на базе 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).

  38. Литература к лекции • И. Соммервиль. Инженерия программного обеспечения, 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.

More Related