66
Вебинар Введение в процесс разработки ПО 19.01.2011

Вебинар "Введение в процесс разработки ПО"

  • Upload
    -

  • View
    1.933

  • Download
    2

Embed Size (px)

DESCRIPTION

Для самого базового уровня подготовки.

Citation preview

ВебинарВведение в процесс разработки ПО

19.01.2011

Организационное

Просьба отключить микрофоны во избежание шума

В случае вопроса не забудьте его включить :)

2

Для кого и зачем

3

О чем

4

Методологии разработки

5

Agenda

Методологии разработки

Формальное описание ролей, активностей, артефактов

То, что не задокументировано, нельзя внедрить массово и измерять

То, что нельзя измерить, нельзя понять То, что нельзя понять, нельзя улучшить

Важное свойство процесса – постоянная обратная связь, направленная на повышение эффективности

6

Что такое методология/процесс

Методологии разработки

7

«Колхоз» VS Процесс

VS

Методологии разработки

8

Требования к проекту

Быстро

Дешево Качественно

Методологии разработки

Отличия от кустарного производства Большой объем параллельных проектов Дополнительное требование к

предсказуемости

9

Понять все глубины наших глубин™

Методологии разработки

Грамотное управление проектами – один из важнейших факторов успеха компании

Критичен правильный анализ требований

Командообразование Интерес участников команды должен

совпадать с интересами проекта

10

Статистика

Методологии разработки

Наличие внедренной методологии сильно повышает зрелость компании

Можно выстрадать свою методологию, можно взять готовую и подстроить под себя

11

Методологии/Процессы

Методологии разработки

Роли Активности Артефакты Фазы …

12

Методология описывает

Методологии разработки

Analyst Architect/Designer Developer Tester Project Manager

Более подробно о них в следующем блоке

13

Типичные роли

Методологии разработки

Формальное описание ответственностей роли: действия со значимым выхлопом

14

Активности

Методологии разработки

Все, что сделано вот этими вот трудовыми руками™

Выхлоп

Документы Исходный код Тестовые сценарии …

15

Артефакты

Методологии разработки

Конкретные приемы, используемые в различных активностях и дисциплинах

16

Инженерные практики

Дисциплины Инженерные практики

PM Итеративная разработкаНепрерывная сборка

Разработка Модульное тестированиеПарная разработкаРефакторингTest-Driven Development

Проектирование Domain-Driven DevelopmentSimple Design

… …

Методологии разработки

Практически во всех областях человеческой деятельности в проектах укрупненно выделяют фазы: Анализ Проектирование Разработка Тестирование

17

Фазы

Методологии разработки

Фазы, роли, артефакты (укрупненно):

18

Карты, деньги, два ствола™

• Сисаналитик

• Бизаналитик

• Маркетектор

Анализ

• Систектор

• Маркетектор

• Проектировщик

Проектирование

• Разработчик

Разработка

• Тестировщик

• QA

Тестирование

Требования

Описание домена

Архитектура

Спецификации модулей

Собранная система

• PMУправление

проектом

Планы проекта

Отчетность

Документы контроля

Методологии разработки

Теперь самое интересное :)

19

Разработка табуретки

С чего начнем?

Методологии разработки

Выделение необходимых ресурсов Оценка и адресация рисков Постоянная обратная связь Координация Командообразование

Цель проекта – создать не идеальный продукт, а приемлемый, чтобы проект уложился в треугольник™

Кстати, этим отличается проектная от продуктовой разработки

20

Начинаем проект

Методологии разработки

Анализ требований Функциональные (сценарии) Нефункциональные (атрибуты

качества) Анализ домена

Бизнес-правила Ограничения Словарь предметной области

21

Анализ

Методологии разработки

Анализ относят к активностям, критическим для успеха проекта

Жизненно необходимо понимать, что требуется Заказчику/Потребителю

Какая нужна табуретка? Зачем она?

22

Анализ

Методологии разработки

Заказчик неоднороден и сам не знает, что ему нужно

23

Анализ

Методологии разработки

Выбираем инженерные решения

Строим модель будущей табуретки

Спецификации элементов (модулей) передаются на разработку

24

Проектирование/Архитектура

Методологии разработки

Разработчики «мочат» программный код

Готовый результат, который можно выпускать - релиз

25

Разработка

Методологии разработки

Командой тестировщиков и QA

26

Тестирование

Методологии разработки

27

Сдача/приемка релиза Заказчику или выпуск на рынок

Методологии разработки

28

Последовательный процесс, Водопад™

• Сисаналитик

• Бизаналитик

• Маркетектор

Анализ

• Систектор

• Маркетектор

• Проектировщик

Проектирование

• Разработчик

Разработка

• Тестировщик

• QA

Тестирование

Требования

Описание домена

Архитектура

Спецификации модулей

Собранная система

• PMУправление

проектом

Планы проекта

Отчетность

Документы контроля

Методологии разработки

Описанный процесс возможен в идеальном мире

29

Реальный мир

МИР

ВАКУУМ

В реальности: Команда косячит –

выявляются дефекты Со временем требования

меняются Что делать?™

Методологии разработки

Одна из основных сегодняшних инженерных практик

Используется практически во всех современных методологиях

Это узаконенная переделка Но не хаотическая (code&fix™), а

направленная на удержание процесса в «треугольнике» Каждое изменение проходит весь

цикл разработки 30

Итеративная разработка

Методологии разработки

Итерация – полный цикл разработки На выходе релиз, не прототип Мы принимаем изменчивость мира и

не пытаемся противодействовать Изначально закладываемся, что все

сто раз изменится Требования Мы успеем накосячить, придется

переделывать

31

Итеративная разработка

Методологии разработки

32

Все вместе

Методологии разработки

Agile – общее обозначение целой группы методологий

Характеризуются набором ценностей и инженерных практик

Ориентированы на: Очень жесткую обратную связь с

Заказчиком Готовность к постоянным изменениям Повышение качества команды Отсутствие лишних/ненужных затрат33

Формальные VS Гибкие

Методологии разработки

34

Существующие методологии

Формальные Комбинированные Гибкие (agile)

Waterfall* Rational Unified Process (RUP)

eXtreme Programming (XP)

V-model Microsoft Solution Framework (MSF)

SCRUM

ГОСТ 34.602 Crystal

… … …Большая ориентация на контроль, формальности, предсказуемость

Большая ориентация на результат

Методологии разработки

Заказная VS Продуктовая разработка Разные источники прибыли:

35

Бизнес-модели компаний

Заказная Продуктовая

Продажа специалистов внешнему Заказчику

Продажа продуктов на рынке

«Табуретка на заказ»: продажа времени столяра

IKEA: массовое производство и продажа табуреток

В зависимости от модели меняется методология и набор инженерных практик

В IT часто имеем комбинированные типы

Методологии разработки

Вопрос для самопроверки: Примеры больше ориентированы и

акцент в презентации делается больше на какого типа компании?

36

Бизнес-модели компаний

Роли в разработке

37

Agenda

Роли в разработке

38

Матрица ролейLevel

DomainJunior Middle Senior

Управление TeamLeader

ProjectManager

Program Manager

Аналитика - Analyst SeniorAnalyst

Проектирование- Designer Architect

Разработка Coder, Junior Developer

Developer Senior Developer

Тестирование Tester TestDesigner

TestManager

Администрирование

Administrator - ConfigurationManager

Роли в разработке

39

Уточнение некоторых ролей

Роли в разработке

40

Карьера

Управление АналитикаПроекти-рование

Разработка ТестированиеАдминистри-

рование

ProgramManager

ProjectManager Senior

AnalystArchitect

SeniorDeveloper

TestManager Configuration

ManagerTeam

LeaderAnalyst Designer Developer

TestDesigner

AdministratorCoder, JuniorDeveloper

Tester

Роли в разработке

41

Частое совмещение ролей

Управление АналитикаПроекти-рование

Разработка ТестированиеАдминистри-

рование

ProgramManager

ProjectManager Senior

AnalystArchitect

SeniorDeveloper

TestManager Configuration

ManagerTeam

LeaderAnalyst Designer Developer

TestDesigner

AdministratorCoder, JuniorDeveloper

Tester

Роли в разработке

42

Пример работы ролей - детализация

• Сисаналитик

• Бизаналитик

• Маркетектор

Анализ

• Систектор

• Маркетектор

• Проектировщик

Проектирование

• Разработчик

• TeamLead

Разработка

• ТестировщикТестирование

Требования

Описание домена

Архитектура

Спецификации модулей

Собранная система

• PMУправление

проектом

Планы проекта

Отчетность

Документы контроля

Инженерные практики

43

Agenda

Инженерные практики

Тестирование – необходимый этап разработки ПО

Но помимо специального этапа тестирования имеет смысл тестировать непосредственно при разработке

Это называется модульное тестирование (unit testing) и проводит его сам разработчик

44

Модульное тестирование

Инженерные практики

Изначально «Небольшое эквивалентное преобразование дизайна/кода»

Сегодня часто так называют любое изменение

Какая практика обязательно должна использоваться с рефакторингом?

45

Рефакторинг

Инженерные практики

Continuous Integration Практика, при которой происходит

частая автоматическая сборка релиза

В идеале – раз в сутки Прогон модульных тестов Сборка Прогон системных тестов

CI дает быструю обратную связь46

Непрерывная сборка

Инженерные практики

Система – вся табуретка Модуль – узел табуретки (ножка,

спинка)

47

Пример с табуреткой

Инженерные практики

48

Пример с табуреткой

Какие иллюстрации можно привести?

Инженерные практики

Модульное тестирование В случае нашей табуретки это означает, что

перед сборкой готового изделия каждый узел тестируется независимо, изолированно от других

Отдельное тестирование ножки Рефакторинг

Мы по необходимости перерабатываем отдельные узлы для повышения удобства и скорости проектирования/разработки

В процессе производства вводим технологическое отверстие в спинке для ускорения сборки всей табуретки

49

Пример с табуреткой

Инженерные практики

Непрерывная сборка После каждой операции над узлом

собираем всю табуретку и тестируем Покрасили спинку – собрали –

посмотрели как смотрится все вместе

50

Пример с табуреткой

Инструментарий

51

Agenda

Инструментарий

Графический язык UML

Используется для Моделирования

домена Проектирования

системы

52

Моделирование

Инструментарий

Integrated Development Environment – интегрированная среда разработки

Это основной инструмент разработчиков

Среда упрощает кодирование и решает множество рутинных проблем при разработке

53

IDE

Инструментарий

Сборщик – это программа, которая автоматизирует рутинные задачи при разработке приложения

Тесно интегрируется с IDE

54

Сборщик

Инструментарий

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

55

Система контроля версий

Инструментарий

Багтрекер призван обеспечить единый репозитарий найденных ошибок и поставленных задач в условиях большой команды разработчиков

В этой системе ведется полная история исправления ошибок и добавления новой функциональности

56

Issue Tracker / Bug Tracker

Инструментарий

Тестирование – необходимый этап разработки ПО

Но помимо специального этапа тестирования имеет смысл тестировать непосредственно при разработке

Это называется модульное тестирование (unit testing) и проводит его сам разработчик

Его необходимо автоматизировать Для автоматизации модульного

тестирования существуют специальные библиотеки

57

Библиотека модульного тестирования

Инструментарий

Project Manager в процессе жизненного цикла разработки должен выполнять огромное количество задач расчета и учета

Для автоматизации этой работы существуют системы управления проектами

Главное – не tool, а умение анализировать состояние проекта и статистику

58

Системы управления проектами

Инструментарий

Issue tracker + Project management Задача – визуализировать Доска физическая / электронная

59

Scrum Board

Инструментарий

60

Scrum Board

Инструментарий

61

Agile VS Traditional PM

Закл

ючени

е

62

Agen

da

Техни

ческая

квал

иф

икац

ия

63

Java s

am

ple

HTML

CSS

JavaScript

VBscript

Java-технологииJ2SE

J2ME

J2EE

Графические библиотеки

RMI

JUnit

ANT

JDBC (client)

Разработка веб-приложений

Разработка бизнес-приложений

Администрирование сервера приложений

JSTL

JSF

Struts

Spring

Web-services (client)

JAX-RPC

JAX-WS

XML in JavaSAX

DOM

JAXP

Beehive

JSP/Servlets

EJB

JMS

Statefull Session

Stateless Session

Entity

Message-driven

Среды разработки

Взаимодействие с хранилищами данных и внешними системами

c СУБД

C иерархическими хранилищами

JDBC (server) Hibernate

JNDI

JTA

С внешними системами J2CA

IntelliJ IDEA

Eclipse

NetBeans

JBuilder

JDeveloper

IBM WebSphere

IBM WebSphere CE

BEA WebLogic

Oracle AS

Borland AS

Geronimo

JBoss

JRun

Инструменты

XML

XSL(T)

XQuery

AJAX

DHTML

Facelets

Апплеты

SOAP

SUN ONE Server

WSDL

UDDI

Web-services (server)

JAX-RPC

JAX-WSUDDI

WSDL

SOAP

Resine

Apache TomcatXSD (Shemas)

64

Обсуждение вопросов

65

Темы следующих встречКакие вопросы Вам еще хотелось бы раскрыть?

66

Контакты

Евгений Кривошеев[email protected]

«Тяжело в учении – легко в бою»SkillTrek – это дистанционный центр компетенций, где специалисты получают востребованные на рынке умения в условиях реальных проектов с выбором удобной им загрузки