SOFTWARE ENGINEERING                      Кратчайший курсFriday, 2 March, 12
РАХИМ ДАВЛЕТКАЛИЕВ                            freetonik.comFriday, 2 March, 12
Friday, 2 March, 12
Friday, 2 March, 12
• Сторонние проекты/заказы                      • Наш собственный продуктFriday, 2 March, 12
Программист vs.                       разработчикFriday, 2 March, 12
КАКОЙ ЯЗЫК ОБЯЗАН                        ЗНАТЬ КАЖДЫЙ                         РАЗРАБОТЧИК?Friday, 2 March, 12
ХОРОШИЙ РАЗРАБОТЧИК:    • Постоянно           читает книги и изучает новое    • Хорошо           знает английский, говорит...
ТЕНДЕНЦИИ    • Уровень             языков повышается    • Все             возвращается на сервер    • Веб-разработка      ...
КРУПНЫЕ СИСТЕМЫ    • Смесь           разных языков и технологий    • Длительные           сроки разработки    • Разные    ...
СЛОЖНОСТИ    • Координация: множество   людей разных специализаций    • Требования: множество   заинтересованных сторон   ...
ПРОЦЕСС РАЗРАБОТКИ    • Анализ   и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Диз...
ТРЕБОВАНИЕ    • Функциональные          • Что            система должна делать?    • Качественные      • Ограничения дизай...
ФУНКЦИОНАЛЬНЫЕ                        ТРЕБОВАНИЯ    • Какие           данные система должна принимать?    • Какие         ...
КАЧЕСТВЕННЫЕ                           ТРЕБОВАНИЯ    • Время           отклика    • Использование             ресурсов    ...
ПРЕЦЕДЕНТ (USE CASE)    • Сценарий          использования    • Спецификация          последовательных действий системыFrid...
Friday, 2 March, 12
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
СПЕЦИФИКАЦИЯ    • Формальное        описание поведения системы          • Когда   пользователь нажмет кнопку ОК, контроль ...
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
АРХИТЕКТУРА    • Клиент-сервер    • p2p    • Монолитное             приложение    • Front           end & back end    • .....
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
КОНЦЕПЦИИ ДИЗАЙНА ПО    • Абстракция    • Refinement (абстрактные модели -> структуры данных)    • Модульность    • Иерархи...
АСПЕКТЫ ДИЗАЙНА ПО    • Компактность    • Расширяемость    • Устойчивость к сбоям    • Удобство поддержки    • Модульность...
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
НАПИСАНИЕ КОДА    • Портативность    • Отказоустойчивость    • Качество        кода    • Оптимальность    • Читаемость    ...
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
ТЕСТИРОВАНИЕ    • до          1956 – ориентация на отладку    • 1957            – 1978 – ориентация на демонстрацию    • 1...
ТИПЫ ТЕСТИРОВАНИЯ    • Функциональное          • Код, функции, классы   (“работает ли эта штука?”)    • Нефункциональные  ...
СТОИМОСТЬ               ИСПРАВЛЕНИЯ ОШИБКИFriday, 2 March, 12
ПРОЦЕСС РАЗРАБОТКИ    • Анализ и сбор требований    • Формирование спецификаций    • Проектирование архитектуры    • Дизай...
МЕТОДОЛОГИИ                           РАЗРАБОТКИ    • Водопад          (waterfall)    • Гибкая          методология (agile...
WATERFALLFriday, 2 March, 12
AGILEFriday, 2 March, 12
AGILE MANIFESTO    • Люди            и отношения > процессы и инструменты    • Работающий            продукт > документаци...
ЦЕННОСТИ    • Совместная работа, парное программирование    • Довольные клиенты    • Принятие любых изменений на любых ста...
ЭКСТРЕМАЛЬНОЕ                      ПРОГРАММИРОВАНИЕFriday, 2 March, 12
ОСНОВНЫЕ КОНЦЕПЦИИ    • Короткий цикл разработки      • Через тестирование и планирование      • Заказчик всегда рядом    ...
SCRUMFriday, 2 March, 12
РОЛИ    • Владелец        продукта    • Команда         разработчиков    • Scrum-мастерFriday, 2 March, 12
ИТЕРАТИВНАЯFriday, 2 March, 12
Friday, 2 March, 12
ФОРМИРОВАНИЕ                            КОМАНДЫ    • 2-3-4           разработчика    • ~1          дизайнер/верстальщик/ил...
ФОРМИРОВАНИЕ                         КОМАНДЫ    • freetonik@gmail.com    • Тема: команда        разработчиков    • Содержа...
Upcoming SlideShare
Loading in …5
×

Lecture 1

1,268 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,268
On SlideShare
0
From Embeds
0
Number of Embeds
520
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lecture 1

  1. 1. SOFTWARE ENGINEERING Кратчайший курсFriday, 2 March, 12
  2. 2. РАХИМ ДАВЛЕТКАЛИЕВ freetonik.comFriday, 2 March, 12
  3. 3. Friday, 2 March, 12
  4. 4. Friday, 2 March, 12
  5. 5. • Сторонние проекты/заказы • Наш собственный продуктFriday, 2 March, 12
  6. 6. Программист vs. разработчикFriday, 2 March, 12
  7. 7. КАКОЙ ЯЗЫК ОБЯЗАН ЗНАТЬ КАЖДЫЙ РАЗРАБОТЧИК?Friday, 2 March, 12
  8. 8. ХОРОШИЙ РАЗРАБОТЧИК: • Постоянно читает книги и изучает новое • Хорошо знает английский, говорит и читает на нём • Умеет письменно излагать свои мыслиFriday, 2 March, 12
  9. 9. ТЕНДЕНЦИИ • Уровень языков повышается • Все возвращается на сервер • Веб-разработка растёт • Кроссплатформенность – всё еще мечтаFriday, 2 March, 12
  10. 10. КРУПНЫЕ СИСТЕМЫ • Смесь разных языков и технологий • Длительные сроки разработки • Разные типы интерфейсов • Сложная бизнес-логика на сервере • Огромные объемы данных • Огромная нагрузкаFriday, 2 March, 12
  11. 11. СЛОЖНОСТИ • Координация: множество людей разных специализаций • Требования: множество заинтересованных сторон • ПланированиеFriday, 2 March, 12
  12. 12. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  13. 13. ТРЕБОВАНИЕ • Функциональные • Что система должна делать? • Качественные • Ограничения дизайна ради определенного качества • Платформенные • Ограничения в платформах/технологиях • Процесса • Ограничения процесса разработкиFriday, 2 March, 12
  14. 14. ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ • Какие данные система должна принимать? • Какие данные система должна отдавать? • Какие данные система должна хранить? • Какие вычисления она должна производить? • Каково время выполнения и синхронизация этих аспектов?Friday, 2 March, 12
  15. 15. КАЧЕСТВЕННЫЕ ТРЕБОВАНИЯ • Время отклика • Использование ресурсов • Читаемость • Доступность • Восстановление после ошибкиFriday, 2 March, 12
  16. 16. ПРЕЦЕДЕНТ (USE CASE) • Сценарий использования • Спецификация последовательных действий системыFriday, 2 March, 12
  17. 17. Friday, 2 March, 12
  18. 18. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  19. 19. СПЕЦИФИКАЦИЯ • Формальное описание поведения системы • Когда пользователь нажмет кнопку ОК, контроль должен быть предыдущему окну, звук должен сигналировать об удачном завершении процесса.Friday, 2 March, 12
  20. 20. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  21. 21. АРХИТЕКТУРА • Клиент-сервер • p2p • Монолитное приложение • Front end & back end • ...Friday, 2 March, 12
  22. 22. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  23. 23. КОНЦЕПЦИИ ДИЗАЙНА ПО • Абстракция • Refinement (абстрактные модели -> структуры данных) • Модульность • Иерархия контроля • Структурное разделение • Структуры данных • Скрытие информацииFriday, 2 March, 12
  24. 24. АСПЕКТЫ ДИЗАЙНА ПО • Компактность • Расширяемость • Устойчивость к сбоям • Удобство поддержки • Модульность • Удобство переиспользования • Безопасность • ЮзабилитиFriday, 2 March, 12
  25. 25. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  26. 26. НАПИСАНИЕ КОДА • Портативность • Отказоустойчивость • Качество кода • Оптимальность • Читаемость кода (единый стиль, комментарии) • ОтладкаFriday, 2 March, 12
  27. 27. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  28. 28. ТЕСТИРОВАНИЕ • до 1956 – ориентация на отладку • 1957 – 1978 – ориентация на демонстрацию • 1979 – 1982 – ориентация на сбой • 1983 – 1987 – ориентация на оценку • 1988 – 2000 – ориентация на предотвращениеFriday, 2 March, 12
  29. 29. ТИПЫ ТЕСТИРОВАНИЯ • Функциональное • Код, функции, классы (“работает ли эта штука?”) • Нефункциональные • Архитектура, скорость, безопасностьFriday, 2 March, 12
  30. 30. СТОИМОСТЬ ИСПРАВЛЕНИЯ ОШИБКИFriday, 2 March, 12
  31. 31. ПРОЦЕСС РАЗРАБОТКИ • Анализ и сбор требований • Формирование спецификаций • Проектирование архитектуры • Дизайн • Реализация • Тестирование • Релиз • ПоддержкаFriday, 2 March, 12
  32. 32. МЕТОДОЛОГИИ РАЗРАБОТКИ • Водопад (waterfall) • Гибкая методология (agile) • Экстремальное программирование (xp) • Scrum • Итеративная разработка (iterative)Friday, 2 March, 12
  33. 33. WATERFALLFriday, 2 March, 12
  34. 34. AGILEFriday, 2 March, 12
  35. 35. AGILE MANIFESTO • Люди и отношения > процессы и инструменты • Работающий продукт > документация • Взаимная работа с клиентами > контракты и бумаги • Отзывчивость к изменениям > следования плануFriday, 2 March, 12
  36. 36. ЦЕННОСТИ • Совместная работа, парное программирование • Довольные клиенты • Принятие любых изменений на любых стадиях • Постоянство качества и скорости разработки • Постоянное тесное сотрудничество • Личное общение с клиентами • Простота • Само-организующиеся команды • Быстрая адаптация к изменениямFriday, 2 March, 12
  37. 37. ЭКСТРЕМАЛЬНОЕ ПРОГРАММИРОВАНИЕFriday, 2 March, 12
  38. 38. ОСНОВНЫЕ КОНЦЕПЦИИ • Короткий цикл разработки • Через тестирование и планирование • Заказчик всегда рядом • Парное программирование • Непрерывный (не дискретный) процесс • Непрерывная интеграция • Рефакторинг • Частые небольшие релизы • Общее понимание • Простота • Стандарты кодирования • Коллективное владение кодомFriday, 2 March, 12
  39. 39. SCRUMFriday, 2 March, 12
  40. 40. РОЛИ • Владелец продукта • Команда разработчиков • Scrum-мастерFriday, 2 March, 12
  41. 41. ИТЕРАТИВНАЯFriday, 2 March, 12
  42. 42. Friday, 2 March, 12
  43. 43. ФОРМИРОВАНИЕ КОМАНДЫ • 2-3-4 разработчика • ~1 дизайнер/верстальщик/иллюстратор/креативщик • Начало 10-недельного проекта (10 спринтов) • Предположительно, веб-сайт / сервисFriday, 2 March, 12
  44. 44. ФОРМИРОВАНИЕ КОМАНДЫ • freetonik@gmail.com • Тема: команда разработчиков • Содержание • Резюме • Ссылки на все ваши работы, примеры кода, всё-всё • Всё, что посчитаете нужнымFriday, 2 March, 12

×