Технологии программирования. Курс на базе Microsoft Solutions Framework Лекция 1. Введение

Содержание

Слайд 2

«Избегайте тех, кто старается подорвать вашу веру в себя. Эта черта

«Избегайте тех, кто старается подорвать вашу веру в себя. Эта черта

свойственна мелким людям. Великий человек, наоборот, внушает вам чувство, что и вы сможете стать великим»
Марк Твен
Слайд 3

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 4

Содержание Немного терминологии Программирование IT-проекты Программы и программные продукты Бизнес и

Содержание

Немного терминологии
Программирование
IT-проекты
Программы и программные продукты
Бизнес и IT-проекты. Рынок ПО в России

и в мире. Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 5

Программирование... На протяжении всего времени обучения мы изучаем программирование. Что такое программирование? Версии зала...

Программирование...

На протяжении всего времени обучения мы изучаем программирование.

Что такое программирование?

Версии зала...

Слайд 6

Программирование Программирование (Computer science) – молодая, активно развивающаяся область. Вопрос о

Программирование

Программирование (Computer science) – молодая, активно развивающаяся область.
Вопрос о том, что

это такое, давно беспокоит программистское сообщество.
Классические версии:
искусство;
наука.
Современные реалии:
программирование это бизнес (IT-проекты).
Слайд 7

IT-проекты Будем понимать под IT-проектами проекты в области информационных технологий. Будем

IT-проекты

Будем понимать под IT-проектами проекты в области информационных технологий.
Будем далее рассматривать

IT-проекты, целью которых является разработка программного обеспечения.
Слайд 8

Вопросы Что такое программное обеспечение (ПО)? Чем ПО отличается от обычной

Вопросы

Что такое программное обеспечение (ПО)?
Чем ПО отличается от обычной программы?
Вчера мы

с другом написали «Калькулятор». Определенно, это программа. Является ли она ПО?

Версии зала...

Слайд 9

Программы и Программное обеспечение Программное обеспечение (Software) – набор компьютерных программ,

Программы и Программное обеспечение

Программное обеспечение (Software) – набор компьютерных программ, процедур

и связанной с ними документации и данных (ISO/IEC 12207).

Программное
обеспечение

Программа

Слайд 10

ПО (Software) и программный продукт Итак, ПО = программа + документация

ПО (Software) и программный продукт

Итак,
ПО = программа + документация +

[...].
Вместо ПО часто говорят «программный продукт».
Программный продукт: одно из главных свойств – продаваемость.
Продаваемость – залог успеха бизнеса по разработке ПО.
Слайд 11

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 12

Бизнес и IT-проекты... Сейчас программирование это не только наука и искусство,

Бизнес и IT-проекты...

Сейчас программирование это не только наука и искусство, но

и бизнес.
Для того, чтобы этот бизнес был успешным, необходимо выполнение многих условий.

Версии зала...

Условия?

Слайд 13

Бизнес и IT-проекты... Необходимые условия успеха программистской компании: выпуск продукта на

Бизнес и IT-проекты...

Необходимые условия успеха программистской компании:
выпуск продукта на рынок
надлежащего качества;
вовремя;
интересного

потенциальным пользователям.
расходы должны соответствовать изначальному бюджету.
Слайд 14

Бизнес и IT-проекты Многие проекты: Цель: Результат: Функциональность Время Бюджет '' $

Бизнес и IT-проекты

Многие проекты:
Цель: Результат:

Функциональность

Время

Бюджет

''

$

Слайд 15

Немного статистики. IT-проекты... Проваленные: закончились неудачей – цель вообще не была

Немного статистики. IT-проекты...

Проваленные: закончились неудачей – цель вообще не была достигнута.
Испытавшие

большие проблемы: закончились созданием продукта, но превысили бюджет или (и) не уложились во время или (и) имеют лишь частичную функциональность.
Успешные: закончились созданием продукта, уложились в бюджет и время. Вся планируемая функциональность реализована.
Слайд 16

Немного статистики. IT-проекты 0% 100% 1994 * Источник: The Standish Group

Немного статистики. IT-проекты

0%

100%

1994

* Источник: The Standish Group International, Extreme Chaos. Данные взяты

с http://www.softwaremag.com/archive/2001feb/CollaborativeMgt.html, http://www-128.ibm.com/developerworks/rational/library/feb06/marasco/

1995

1998

2000

Провалены Испытали большие проблемы Успешные

28%

2001

31%

2003

Слайд 17

Еще немного статистики…* 2004г. 3 700 000 000$ ушло на разработку

Еще немного статистики…*

2004г.
3 700 000 000$
ушло на разработку программных

приложений (без учета консалтинга, обновления методологии ...)

* Источник: The Standish Group International, Extreme Chaos. Данные взяты с http://www.softwaremag.com/archive/2001feb/CollaborativeMgt.html, http://www-128.ibm.com/developerworks/rational/library/feb06/marasco/

Слайд 18

Еще немного статистики* * Источник: The Standish Group International Данные взяты с http://www.infoworld.com/infoworld/img/33FEmyth2_ch2.gif

Еще немного статистики*

* Источник: The Standish Group International
Данные взяты с

http://www.infoworld.com/infoworld/img/33FEmyth2_ch2.gif
Слайд 19

Об отрасли разработки ПО в России На конец 90-х годов: Хорошие

Об отрасли разработки ПО в России

На конец 90-х годов:
Хорошие программисты.
Грамотные аналитики.
Недостаток

хороших управленцев.
Проблемы с документированием и локализацией.
Проблемы с рекламой и продвижением.
Слайд 20

IT-рынок и отрасль разработки ПО в России* Современные реалии (2005-2006гг.) Объем

IT-рынок и отрасль разработки ПО в России*

Современные реалии (2005-2006гг.)
Объем экспорта ПО

из России в 2005г. превысил 1млрд.$ (автомобили 380млн.$, атомная энергетика – 850млн.$).

* Источник: Светлана Шляхтина, Компьютер Пресс, 27 января 2006г.
Данные взяты с http://www.aplana.ru/news/fullpublication.asp?id=139&page=1&year=2006

Слайд 21

IT-рынок и отрасль разработки ПО в России* Современные реалии (2005-2006г.г.) IT-рынок

IT-рынок и отрасль разработки ПО в России*

Современные реалии (2005-2006г.г.)
IT-рынок в России
2004

– 9,2млрд.$
2005 – рост 22,1% (в мире ~6%)!
Мировой IT рынок (2005г.) – 900млрд.$

* Источник: Светлана Шляхтина, Компьютер Пресс, 27 января 2006г.
Данные взяты с http://www.aplana.ru/news/fullpublication.asp?id=139&page=1&year=2006

Слайд 22

IT-рынок и отрасль разработки ПО в России* Современные реалии (2005-2006г.г.) Рынок

IT-рынок и отрасль разработки ПО в России*

Современные реалии (2005-2006г.г.)
Рынок ПО в

России
2005 – 1,4млрд.$ (1/8 от всего IT).
Рост – 40-50% в год.

* Источник: Светлана Шляхтина, Компьютер Пресс, 27 января 2006г.
Данные взяты с http://www.aplana.ru/news/fullpublication.asp?id=139&page=1&year=2006

Слайд 23

Тенденции Быстрый рост объемов IT-рынка, рынка ПО. Укрепление позиций российских компаний.

Тенденции

Быстрый рост объемов IT-рынка, рынка ПО.
Укрепление позиций российских компаний.
По-прежнему малая доля

в мировых объемах.
В чем нуждается отрасль?
В грамотных специалистах, способных повысить успешность проектов.
Слайд 24

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 25

О предмете Задачи нашего предмета: Изучить причины неудач IT-проектов. Выявить способы

О предмете

Задачи нашего предмета:
Изучить причины неудач IT-проектов.
Выявить способы устранения этих причин.
Научиться

применять эти способы на практике.
Слайд 26

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 27

Почему проекты не успешны? Специалисты выделяют следующие причины: Нереалистичные временные рамки.

Почему проекты не успешны?

Специалисты выделяют следующие причины:
Нереалистичные временные рамки.
Недостаток количества исполнителей.
Размытые

границы проекта.
Недостаток средств.
Нехватка квалифицированных кадров.
Слайд 28

Кто виноват? Все 5 пунктов относятся к компетенции управленцев различного уровня.

Кто виноват?

Все 5 пунктов относятся к компетенции управленцев различного уровня.
Проектами в

области разработки ПО очень сложно эффективно управлять.
Почему?

Версии зала...

Слайд 29

Откуда берется сложность управления? Человеческий фактор. Традиционные трудности управления коллективом. Новая

Откуда берется сложность управления?

Человеческий фактор. Традиционные трудности управления коллективом.
Новая молодая область.

Не хватает квалифицированных кадров, методов, технологий, опыта.
Сложность задач. Рост возможностей приводит к росту сложности решаемых задач и наоборот.
Трудности в работе с заказчиками и будущими пользователями. Заказчики не знают, что они хотят. Пользователи плохо владеют ПК и не понимают, как он работает и что от него ждать. Все говорят на разных языках.
...
Слайд 30

Как бороться со сложностью? Как бороться со сложностью задач? (1) Как

Как бороться со сложностью?

Как бороться со сложностью задач? (1)
Как бороться со

сложностью управления? (2)
Ответ: разрабатывать и внедрять специальные технологии.
– технологии программирования (изучали в курсах Основы программирования, ООП).
– методологии MSF, RUP, XP, … (рассмотрим в этом курсе, но чуть позже).
Слайд 31

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структурное программирование
Модульное программирование
Объектно-ориентированное программирование
Компонентное программирование
Структура учебного плана
Литература
Слайд 32

Технологии программирования... Начнем разговор того, что нам должно быть известно, с

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

Начнем разговор того, что нам должно быть известно, с технологий

программирования.
Что такое технология?
Технология – совокупность производственных процессов в определенной отрасли производства, а также научное описание способов производства*.

* Источник: С.И. Ожегов. Словарь русского языка. - М.: Советская энциклопедия, 1975.

Слайд 33

Технологии программирования... Создание программных продуктов – технологический процесс. При этом применяются

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

Создание программных продуктов – технологический процесс.
При этом применяются различные технологии.
Эти

технологии относятся не только к кодированию, но и к анализу, проектированию, управлению проектом, разработке документации...
Слайд 34

Технологии программирования... Технология программирования – совокупность методов, приемов и средств для

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

Технология программирования – совокупность методов, приемов и средств для сокращения

стоимости и повышения качества разработки программных систем.
Слайд 35

Технологии программирования... Над созданием программного продукта работают представители разных специальностей: Аналитики;

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

Над созданием программного продукта работают представители разных специальностей:
Аналитики;
Управленцы (менеджеры);
Тестеры;
Кодировщики (программисты);
Технические

писатели;
Системные администраторы;
Специалисты по повторному использованию;
Дизайнеры;
Специалисты по эргономике;
...
Слайд 36

Технологии программирования В проектировании и программировании активно применяются следующие технологии: Структурное

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

В проектировании и программировании активно применяются следующие технологии:
Структурное программирование.
Модульное программирование.
Объектно-ориентированное

программирование.
Компонентное программирование.
Слайд 37

Структурное программирование… Э. Дэйкстра (60-е годы): Для любой простой программы можно

Структурное программирование…

Э. Дэйкстра (60-е годы):
Для любой простой программы можно построить

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

Структурное программирование… Простая программа – ровно один вход и один выход. Базисные конструкции:

Структурное программирование…

Простая программа – ровно один вход и один выход.
Базисные конструкции:

Слайд 39

Структурное программирование Стандартизация и линейность программы – снижение сложности. Некоторые соображения:

Структурное программирование

Стандартизация и линейность программы – снижение сложности.
Некоторые соображения:
Алгоритм должен иметь

1 вход и 1 выход.
Никаких goto.
Нет зависимости от языка программирования.
Ясен набор операторов, который необходим в языках программирования.
Слайд 40

Модульное программирование... Основная идея: разбиваем сложную задачу на подзадачи, каждую из

Модульное программирование...

Основная идея: разбиваем сложную задачу на подзадачи, каждую из них

при необходимости разбиваем снова и т.д.
Получаем простые задачи, их решаем, объединяем.
Слайд 41

Модульное программирование Структурное программирование – универсальный базис алгоритмических конструкций. Модульное программирование

Модульное программирование

Структурное программирование – универсальный базис алгоритмических конструкций.
Модульное программирование – специфичный

для задачи базис из модулей.
Более высокий уровень абстракции.
Настройка на конкретную задачу.
Возможности повторного использования.
Возможности коллективной разработки – разделение труда.
Слайд 42

Объектно-ориентированное программирование... Дальнейшая борьба со сложностью. Технология работает с этапа анализа.

Объектно-ориентированное программирование...

Дальнейшая борьба со сложностью.
Технология работает с этапа анализа.
Анализ – Проектирование

– Программирование.
В основе – объектная модель и объектная декомпозиция.
Слайд 43

Объектно-ориентированное программирование Основные принципы объектной модели: абстракция; инкапсуляция; иерархия (наследование, агрегация);

Объектно-ориентированное программирование

Основные принципы объектной модели:
абстракция;
инкапсуляция;
иерархия (наследование, агрегация);
полиморфизм;
модульность.
Объектная декомпозиция (в отличие от

алгоритмической): элементы проекта – классы и объекты (а не алгоритмы). И только потом данные и алгоритмы.
Слайд 44

Компонентное программирование... Компонентное программирование – развитие объектно-ориентированной идеологии. Введен следующий уровень

Компонентное программирование...

Компонентное программирование – развитие объектно-ориентированной идеологии.
Введен следующий уровень абстракции –

классы объединяются в компоненты.
Основной принцип компонентного программирования: сборка приложения из готовых компонент, в общем случае написанных на разных языках.
Слайд 45

Компонентное программирование Компонент: программный код в виде самостоятельного модуля м.б. использован

Компонентное программирование

Компонент:
программный код в виде самостоятельного модуля
м.б. использован в неизменном виде
может

допускать настройку
обладает поведением (функциональностью).
Компонент изолирован от внешнего мира своим интерфейсом – набором методов (их сигнатурами).
Компонентная программа – набор независимых компонент, связанных друг с другом посредством интерфейсов.
Слайд 46

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 47

Некоторые формальности Лекции – 16 часов (1 час в неделю). Практика

Некоторые формальности

Лекции – 16 часов (1 час в неделю).
Практика (ауд.) –

16 часов (1 час в неделю).
Терминал-класс – 32 часа (2 часа в неделю).
Слайд 48

Структура курса - лекции Вводная лекция (заканчивается ☺). Введение в программную

Структура курса - лекции

Вводная лекция (заканчивается ☺).
Введение в программную инженерию.
Знакомимся с

основными понятиями.
Изучаем основные проблемы и подходы к их решению.
Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).
Вспоминаем идеи ООП. Знакомимся с анализом и проектированием.
Осваиваем визуальное моделирование. Изучаем UML.
Методология создания программных решений Microsoft Solutions Framework (MSF).
Знакомимся с тем, как происходит процесс создания и выпуска на рынок программного продукта.
Слайд 49

Структура курса - практика Разбиваемся на команды по 4-6 человек. Выбираем

Структура курса - практика

Разбиваемся на команды по 4-6 человек.
Выбираем себе задачу

из списка.
Работаем с заказчиком (преподаватель ☺).
Определяемся с ролями разработчиков.
Разрабатываем и внедряем программный продукт.
Слайд 50

Содержание Немного терминологии Бизнес и IT-проекты. Рынок ПО в России и

Содержание

Немного терминологии
Бизнес и IT-проекты. Рынок ПО в России и в мире.

Немного статистики
О предмете
Причины неудачи IT-проектов
Технологии программирования – путь к успеху в разработке ПО
Структура учебного плана
Литература
Слайд 51

Использованные Интернет-источники http://www.softwaremag.com/L.cfm?Doc=newsletter/2004-01-15/Standish http://www.umsl.edu/~rmfv3g/Index.htm http://www-128.ibm.com/developerworks/rational/library/feb06/marasco/ http://www.computerworld.com/managementtopics/management/project/story/0,10801,84266,00.html http://www.aplana.ru/news/fullpublication.asp?id=139&page=1&year=0

Использованные Интернет-источники

http://www.softwaremag.com/L.cfm?Doc=newsletter/2004-01-15/Standish
http://www.umsl.edu/~rmfv3g/Index.htm
http://www-128.ibm.com/developerworks/rational/library/feb06/marasco/
http://www.computerworld.com/managementtopics/management/project/story/0,10801,84266,00.html
http://www.aplana.ru/news/fullpublication.asp?id=139&page=1&year=0