Upload
-
View
1.933
Download
2
Embed Size (px)
DESCRIPTION
Для самого базового уровня подготовки.
Citation preview
Организационное
Просьба отключить микрофоны во избежание шума
В случае вопроса не забудьте его включить :)
2
Методологии разработки
Формальное описание ролей, активностей, артефактов
То, что не задокументировано, нельзя внедрить массово и измерять
То, что нельзя измерить, нельзя понять То, что нельзя понять, нельзя улучшить
Важное свойство процесса – постоянная обратная связь, направленная на повышение эффективности
6
Что такое методология/процесс
Методологии разработки
Отличия от кустарного производства Большой объем параллельных проектов Дополнительное требование к
предсказуемости
9
Понять все глубины наших глубин™
Методологии разработки
Грамотное управление проектами – один из важнейших факторов успеха компании
Критичен правильный анализ требований
Командообразование Интерес участников команды должен
совпадать с интересами проекта
10
Статистика
Методологии разработки
Наличие внедренной методологии сильно повышает зрелость компании
Можно выстрадать свою методологию, можно взять готовую и подстроить под себя
11
Методологии/Процессы
Методологии разработки
Analyst Architect/Designer Developer Tester Project Manager
Более подробно о них в следующем блоке
13
Типичные роли
Методологии разработки
Формальное описание ответственностей роли: действия со значимым выхлопом
14
Активности
Методологии разработки
Все, что сделано вот этими вот трудовыми руками™
Выхлоп
Документы Исходный код Тестовые сценарии …
15
Артефакты
Методологии разработки
Конкретные приемы, используемые в различных активностях и дисциплинах
16
Инженерные практики
Дисциплины Инженерные практики
PM Итеративная разработкаНепрерывная сборка
Разработка Модульное тестированиеПарная разработкаРефакторингTest-Driven Development
Проектирование Domain-Driven DevelopmentSimple Design
… …
Методологии разработки
Практически во всех областях человеческой деятельности в проектах укрупненно выделяют фазы: Анализ Проектирование Разработка Тестирование
17
Фазы
Методологии разработки
Фазы, роли, артефакты (укрупненно):
18
Карты, деньги, два ствола™
• Сисаналитик
• Бизаналитик
• Маркетектор
Анализ
• Систектор
• Маркетектор
• Проектировщик
Проектирование
• Разработчик
Разработка
• Тестировщик
• QA
Тестирование
Требования
Описание домена
Архитектура
Спецификации модулей
Собранная система
• PMУправление
проектом
Планы проекта
Отчетность
Документы контроля
Методологии разработки
Выделение необходимых ресурсов Оценка и адресация рисков Постоянная обратная связь Координация Командообразование
Цель проекта – создать не идеальный продукт, а приемлемый, чтобы проект уложился в треугольник™
Кстати, этим отличается проектная от продуктовой разработки
20
Начинаем проект
Методологии разработки
Анализ требований Функциональные (сценарии) Нефункциональные (атрибуты
качества) Анализ домена
Бизнес-правила Ограничения Словарь предметной области
21
Анализ
Методологии разработки
Анализ относят к активностям, критическим для успеха проекта
Жизненно необходимо понимать, что требуется Заказчику/Потребителю
Какая нужна табуретка? Зачем она?
22
Анализ
Методологии разработки
Выбираем инженерные решения
Строим модель будущей табуретки
Спецификации элементов (модулей) передаются на разработку
24
Проектирование/Архитектура
Методологии разработки
Разработчики «мочат» программный код
Готовый результат, который можно выпускать - релиз
25
Разработка
Методологии разработки
28
Последовательный процесс, Водопад™
• Сисаналитик
• Бизаналитик
• Маркетектор
Анализ
• Систектор
• Маркетектор
• Проектировщик
Проектирование
• Разработчик
Разработка
• Тестировщик
• QA
Тестирование
Требования
Описание домена
Архитектура
Спецификации модулей
Собранная система
• PMУправление
проектом
Планы проекта
Отчетность
Документы контроля
Методологии разработки
Описанный процесс возможен в идеальном мире
29
Реальный мир
МИР
ВАКУУМ
В реальности: Команда косячит –
выявляются дефекты Со временем требования
меняются Что делать?™
Методологии разработки
Одна из основных сегодняшних инженерных практик
Используется практически во всех современных методологиях
Это узаконенная переделка Но не хаотическая (code&fix™), а
направленная на удержание процесса в «треугольнике» Каждое изменение проходит весь
цикл разработки 30
Итеративная разработка
Методологии разработки
Итерация – полный цикл разработки На выходе релиз, не прототип Мы принимаем изменчивость мира и
не пытаемся противодействовать Изначально закладываемся, что все
сто раз изменится Требования Мы успеем накосячить, придется
переделывать
31
Итеративная разработка
Методологии разработки
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
Бизнес-модели компаний
Роли в разработке
38
Матрица ролейLevel
DomainJunior Middle Senior
Управление TeamLeader
ProjectManager
Program Manager
Аналитика - Analyst SeniorAnalyst
Проектирование- Designer Architect
Разработка Coder, Junior Developer
Developer Senior Developer
Тестирование Tester TestDesigner
TestManager
Администрирование
Administrator - ConfigurationManager
Роли в разработке
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Управление
проектом
Планы проекта
Отчетность
Документы контроля
Инженерные практики
Тестирование – необходимый этап разработки ПО
Но помимо специального этапа тестирования имеет смысл тестировать непосредственно при разработке
Это называется модульное тестирование (unit testing) и проводит его сам разработчик
44
Модульное тестирование
Инженерные практики
Изначально «Небольшое эквивалентное преобразование дизайна/кода»
Сегодня часто так называют любое изменение
Какая практика обязательно должна использоваться с рефакторингом?
45
Рефакторинг
Инженерные практики
Continuous Integration Практика, при которой происходит
частая автоматическая сборка релиза
В идеале – раз в сутки Прогон модульных тестов Сборка Прогон системных тестов
CI дает быструю обратную связь46
Непрерывная сборка
Инженерные практики
Система – вся табуретка Модуль – узел табуретки (ножка,
спинка)
47
Пример с табуреткой
Инженерные практики
Модульное тестирование В случае нашей табуретки это означает, что
перед сборкой готового изделия каждый узел тестируется независимо, изолированно от других
Отдельное тестирование ножки Рефакторинг
Мы по необходимости перерабатываем отдельные узлы для повышения удобства и скорости проектирования/разработки
В процессе производства вводим технологическое отверстие в спинке для ускорения сборки всей табуретки
49
Пример с табуреткой
Инженерные практики
Непрерывная сборка После каждой операции над узлом
собираем всю табуретку и тестируем Покрасили спинку – собрали –
посмотрели как смотрится все вместе
50
Пример с табуреткой
Инструментарий
Графический язык 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
Техни
ческая
квал
иф
икац
ия
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)
66
Контакты
Евгений Кривошеев[email protected]
«Тяжело в учении – легко в бою»SkillTrek – это дистанционный центр компетенций, где специалисты получают востребованные на рынке умения в условиях реальных проектов с выбором удобной им загрузки