ISDElective — различия между версиями
(→Осень 2019) |
Mednik (обсуждение | вклад) м (Откат правок Seosky (обсуждение) к версии Alexmitsyuk) |
||
(не показано 46 промежуточных версии 3 участников) | |||
Строка 3: | Строка 3: | ||
== О курсе == | == О курсе == | ||
− | Курс для тех, кто хотел бы овладеть методами, применяемыми при разработке крупномасштабного корпоративного программного обеспечения. Будет рассказано о том, каким образом устроена работа с репозиториями исходных кодов, каким образом организуется совместная работа большого количества программистов над одним проектом, как использовать код с открытой лицензией, каким образом проводить рефакторинг и т.д. Подробный список тем | + | Курс для тех, кто хотел бы овладеть методами, применяемыми при разработке крупномасштабного корпоративного программного обеспечения. Будет рассказано о том, каким образом устроена работа с репозиториями исходных кодов, каким образом организуется совместная работа большого количества программистов над одним проектом, как использовать код с открытой лицензией, каким образом проводить рефакторинг и т.д. Подробный список тем приводится далее. |
+ | == Регистрация == | ||
− | + | Для регистрации нужно заполнить [https://docs.google.com/forms/d/e/1FAIpQLScr0mWcfm_ULCve_sGZWb45G46ZEjaDGLDwO8EsqwAU6Qes2w/viewform эту анкету] | |
+ | Наша группа в [https://t.me/software_development_hse телеграмме] | ||
+ | |||
+ | == Расписание == | ||
=== Осень 2019 === | === Осень 2019 === | ||
Строка 13: | Строка 17: | ||
Каждую неделю запланированы одна лекция и одно практическое занятие.<br /> | Каждую неделю запланированы одна лекция и одно практическое занятие.<br /> | ||
Первое занятие запланировано на 25 сентября. | Первое занятие запланировано на 25 сентября. | ||
+ | |||
+ | 1 модуль: c 25 сентября по 16 октября – ауд. '''G103'''<br /> | ||
+ | 2 модуль: c 23 октября по 20 ноября – ауд. '''G103''' | ||
+ | |||
+ | '''Внимание, 23 октября занятия не будет из-за сессии, следующее - 30 октября.'''<br /> | ||
+ | Внимание, 9 октября занятия не будет, следующее - 16 октября. | ||
+ | |||
+ | Не переживайте, если мест для официальной записи на факультатив нет. | ||
+ | Если вам интересен курс, имеет смысл всё равно появиться на занятии. | ||
+ | В аудитории на лекции смогут быть до 40 человек. | ||
== Предварительный список тем курса == | == Предварительный список тем курса == | ||
Строка 19: | Строка 33: | ||
* История средств и методов контроля версий ПО. | * История средств и методов контроля версий ПО. | ||
* Какие бывают репозитории? | * Какие бывают репозитории? | ||
− | * Что такое моно-репозитории и в чём их отличие от других? | + | * Что такое моно-репозитории и в чём их отличие от других? Почему компании переходят на моно-репозитории? |
− | + | ||
− | + | [https://docs.google.com/presentation/d/1ZG8zGEYdriQyFkCbh6yUV9O3opGxihRmsIore045dzQ/edit?usp=sharing Слайды для лекции по VCS] | |
− | + | [https://www.youtube.com/watch?v=8Ph81IYXVxE&feature=youtu.be Видео лекции по VCS] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ==== Раздел | + | ==== Раздел 2. Верификация и Валидация ==== |
− | * | + | * Статический Анализ: Теорема Райса, Алгоритмическая неразрешимость, Аппроксимация сверху и снизу, Неточный анализ. |
− | * | + | * Тестирование программ: уровни, методы, цели. Тестовые фреймворки и мокинг. Покрытие, Профилирования, Бернчакринг. |
− | * | + | * Валидация: догфудинг, UI сессии, метрики и аналитика, АБ-тестирование. |
− | + | ||
− | + | [https://docs.google.com/presentation/d/1IvD3z-TME1SBFMMl7CnVmZerj6ZcDuXraj71iQDYWO0/edit?usp=sharing Слайды для лекции Verification and Validation] | |
+ | |||
+ | [https://www.youtube.com/watch?v=758p3aOC_QE Видео лекции Verification and Validation] | ||
+ | |||
+ | ==== Раздел 3. Системы сборки, пакетные менеджеры и непрерывная интеграция ==== | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1SQYu_bvZhZth4vnvMMbSh_Jkme7XaQy2Swbws2Swh50/edit?usp=sharing Слайды для лекции Building and Distribution] | ||
+ | |||
+ | [https://www.youtube.com/watch?v=KZWmmWVENFg Видео лекции Building and Distribution] | ||
==== Раздел 4. Практики командной работы с программным кодом ==== | ==== Раздел 4. Практики командной работы с программным кодом ==== | ||
* Что такое стиль кода? | * Что такое стиль кода? | ||
− | * Зачем нужны соглашения о стиле кода | + | * Зачем нужны соглашения о стиле кода? |
− | * Что такое | + | * Что такое принципы проектирования? |
− | * Что такое | + | * Какие есть принципы в ООП? |
− | + | * Что такое шаблоны проектирования, чем они отличаются от принципов? | |
* Что такое рецензирование кода (code review)? | * Что такое рецензирование кода (code review)? | ||
* Как готовить код к рецензированию? | * Как готовить код к рецензированию? | ||
* Как проводить рецензирование чужого кода? | * Как проводить рецензирование чужого кода? | ||
* Как организовать рецензирование кода в команде? | * Как организовать рецензирование кода в команде? | ||
+ | |||
+ | [https://docs.google.com/presentation/d/13Dlhm0A4tiTahzbIPBLLUAr-PMP4nUooNfYGeq4O9pA Слайды] | ||
+ | |||
+ | [http://google.github.io/styleguide/ Google Style Guides] | ||
+ | [https://google.github.io/eng-practices/review/ Google's Engineering Practices - Code Review Developer Guide] | ||
+ | |||
+ | [https://www.youtube.com/watch?v=KOJgKdwjg88 Видео лекции How to write code] | ||
==== Раздел 5. Планирование и работа с системами трекинга ==== | ==== Раздел 5. Планирование и работа с системами трекинга ==== | ||
Строка 57: | Строка 81: | ||
* Как должна выглядеть хорошая запись об ошибке для себя/другого программиста? | * Как должна выглядеть хорошая запись об ошибке для себя/другого программиста? | ||
* Что особенно важно не забыть при документировании проблем и ошибок в ПО? | * Что особенно важно не забыть при документировании проблем и ошибок в ПО? | ||
+ | |||
+ | [https://www.youtube.com/watch?v=TbEXkm2LsgY Видео лекции Product management] | ||
==== Раздел 6. Особенности разработки и использования открытого программного обеспечения ==== | ==== Раздел 6. Особенности разработки и использования открытого программного обеспечения ==== | ||
Строка 66: | Строка 92: | ||
* Какие существуют практики участия в коллективно разрабатываемых проектах? | * Какие существуют практики участия в коллективно разрабатываемых проектах? | ||
* Каковы особенности использования ПО с открытым исходным кодом в коммерческих разработках? | * Каковы особенности использования ПО с открытым исходным кодом в коммерческих разработках? | ||
+ | |||
+ | [https://www.youtube.com/watch?v=_OKG8VKMFE8 Видео лекции про свободное ПО] | ||
==== Раздел 7. Исследования и разработка ==== | ==== Раздел 7. Исследования и разработка ==== | ||
Строка 74: | Строка 102: | ||
* Чем отличается характер работы в исследовательских (R&D) компаниях или отделах компаний от работы обычного прикладного/системного программиста? | * Чем отличается характер работы в исследовательских (R&D) компаниях или отделах компаний от работы обычного прикладного/системного программиста? | ||
* Стоит ли описывать в исследовательских статьях свои собственные результаты? Что это даёт инженеру, который не занимается научной работой? | * Стоит ли описывать в исследовательских статьях свои собственные результаты? Что это даёт инженеру, который не занимается научной работой? | ||
+ | |||
+ | [https://www.youtube.com/watch?v=V_Y-slDJBM0 Видео лекции] | ||
==== Раздел 8. Социальные аспекты жизни программиста ==== | ==== Раздел 8. Социальные аспекты жизни программиста ==== | ||
Строка 81: | Строка 111: | ||
* В чём состоят особенности работы программиста в распределённых командах из многих участников? | * В чём состоят особенности работы программиста в распределённых командах из многих участников? | ||
* Почему работа современного программиста не может рассматриваться в отрыве от социальных аспектов? | * Почему работа современного программиста не может рассматриваться в отрыве от социальных аспектов? | ||
+ | |||
+ | [https://www.youtube.com/watch?v=g-ouezO7-ME Видео восьмой лекции] | ||
+ | |||
+ | [https://www.youtube.com/playlist?list=PLEqoHzpnmTfBKKNYsPjCF34vOWOco292i Плейлист с записями всех лекций курса осенью 2019 года] | ||
== Оценка == | == Оценка == | ||
Строка 100: | Строка 134: | ||
== Авторы курса == | == Авторы курса == | ||
− | * '''В. К. Кошелев''' - лектор курса, ведущий разработчик компании JetBrains | + | * '''В. К. Кошелев''' - лектор курса, ведущий разработчик компании JetBrains ([https://www.youtube.com/watch?v=zI1QmnRRBMA вот тут] Владимир рассказывает про баги) |
* А. А. Мицюк - научный сотрудник ФКН ([https://www.hse.ru/staff/amitsyuk личная страница]) | * А. А. Мицюк - научный сотрудник ФКН ([https://www.hse.ru/staff/amitsyuk личная страница]) | ||
Текущая версия на 13:36, 26 августа 2022
Страница факультативного курса "Методы разработки программного обеспечения" (Industrial Software Development)
Содержание
- 1 О курсе
- 2 Регистрация
- 3 Расписание
- 4 Предварительный список тем курса
- 4.1 Раздел 1. Системы контроля версий (СКВ) и работа с ними
- 4.2 Раздел 2. Верификация и Валидация
- 4.3 Раздел 3. Системы сборки, пакетные менеджеры и непрерывная интеграция
- 4.4 Раздел 4. Практики командной работы с программным кодом
- 4.5 Раздел 5. Планирование и работа с системами трекинга
- 4.6 Раздел 6. Особенности разработки и использования открытого программного обеспечения
- 4.7 Раздел 7. Исследования и разработка
- 4.8 Раздел 8. Социальные аспекты жизни программиста
- 5 Оценка
- 6 Авторы курса
- 7 Благодарности
О курсе
Курс для тех, кто хотел бы овладеть методами, применяемыми при разработке крупномасштабного корпоративного программного обеспечения. Будет рассказано о том, каким образом устроена работа с репозиториями исходных кодов, каким образом организуется совместная работа большого количества программистов над одним проектом, как использовать код с открытой лицензией, каким образом проводить рефакторинг и т.д. Подробный список тем приводится далее.
Регистрация
Для регистрации нужно заполнить эту анкету
Наша группа в телеграмме
Расписание
Осень 2019
Курс будет проходить по средам с 16:40 до 19:30.
Каждую неделю запланированы одна лекция и одно практическое занятие.
Первое занятие запланировано на 25 сентября.
1 модуль: c 25 сентября по 16 октября – ауд. G103
2 модуль: c 23 октября по 20 ноября – ауд. G103
Внимание, 23 октября занятия не будет из-за сессии, следующее - 30 октября.
Внимание, 9 октября занятия не будет, следующее - 16 октября.
Не переживайте, если мест для официальной записи на факультатив нет. Если вам интересен курс, имеет смысл всё равно появиться на занятии. В аудитории на лекции смогут быть до 40 человек.
Предварительный список тем курса
Раздел 1. Системы контроля версий (СКВ) и работа с ними
- Какие бывают СКВ?
- История средств и методов контроля версий ПО.
- Какие бывают репозитории?
- Что такое моно-репозитории и в чём их отличие от других? Почему компании переходят на моно-репозитории?
Раздел 2. Верификация и Валидация
- Статический Анализ: Теорема Райса, Алгоритмическая неразрешимость, Аппроксимация сверху и снизу, Неточный анализ.
- Тестирование программ: уровни, методы, цели. Тестовые фреймворки и мокинг. Покрытие, Профилирования, Бернчакринг.
- Валидация: догфудинг, UI сессии, метрики и аналитика, АБ-тестирование.
Слайды для лекции Verification and Validation
Видео лекции Verification and Validation
Раздел 3. Системы сборки, пакетные менеджеры и непрерывная интеграция
Слайды для лекции Building and Distribution
Видео лекции Building and Distribution
Раздел 4. Практики командной работы с программным кодом
- Что такое стиль кода?
- Зачем нужны соглашения о стиле кода?
- Что такое принципы проектирования?
- Какие есть принципы в ООП?
- Что такое шаблоны проектирования, чем они отличаются от принципов?
- Что такое рецензирование кода (code review)?
- Как готовить код к рецензированию?
- Как проводить рецензирование чужого кода?
- Как организовать рецензирование кода в команде?
Google Style Guides Google's Engineering Practices - Code Review Developer Guide
Видео лекции How to write code
Раздел 5. Планирование и работа с системами трекинга
- Что такое баг-трекер (bug/issue tracker)?
- Какие используются эффективные практики документирования ошибок и требований?
- Что такое релизные циклы? Как их планировать?
- Как должна выглядеть хорошая запись об ошибке для себя/другого программиста?
- Что особенно важно не забыть при документировании проблем и ошибок в ПО?
Видео лекции Product management
Раздел 6. Особенности разработки и использования открытого программного обеспечения
- Что такое открытое программное обеспечение?
- В чём особенности проектов с открытым исходным кодом?
- Всегда ли ПО с открытым кодом разрабатывается сообществом?
- Как эффективно использовать ПО с открытым исходным кодом и не наступать на сопутствующие грабли?
- Какие существуют практики участия в коллективно разрабатываемых проектах?
- Каковы особенности использования ПО с открытым исходным кодом в коммерческих разработках?
Раздел 7. Исследования и разработка
- Чем исследовательские статьи могут быть полезны прикладному программисту?
- Как правильно инженеру читать статьи? И надо ли вообще их читать?
- Как и где искать новые способы решения задач, которые надо решать?
- Чем отличается характер работы в исследовательских (R&D) компаниях или отделах компаний от работы обычного прикладного/системного программиста?
- Стоит ли описывать в исследовательских статьях свои собственные результаты? Что это даёт инженеру, который не занимается научной работой?
Раздел 8. Социальные аспекты жизни программиста
- Что такое интервью? Когда и какие они бывают у программистов?
- Как правильно готовиться к и проходить интервью?
- В чём состоят особенности работы программиста в распределённых командах из многих участников?
- Почему работа современного программиста не может рассматриваться в отрыве от социальных аспектов?
Плейлист с записями всех лекций курса осенью 2019 года
Оценка
Текущий контроль предусматривает выполнение студентам набора домашних заданий. Накопленная оценка (О_накопленная) за курс выставляется по сумме баллов, полученных за выполнение этих домашних заданий. Оценка за домашнее задание выставляется с учетом полноты выполнения задания, а также способности студента объяснить примененные при решении приемы. На последнем занятии студенты сдают устный экзамен (О_экзамен) по всему материалу курса. Студент получает не менее 80 минут на подготовку к ответу.
О_накопленная формируется на основании суммы баллов, полученных в ходе курса, по следующей схеме:
Балл | 0 | 1-19 | 20-29 | 30-39 | 40-49 | 50-59 | 60-69 | 70-79 | 80-89 | 90-99 | ≥100 |
О_накопленная | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Результирующая оценка вычисляется по формуле: О_результирующая = min(0,8*О_экзамен + 0,4*О_накопленная; 10)
Авторы курса
- В. К. Кошелев - лектор курса, ведущий разработчик компании JetBrains (вот тут Владимир рассказывает про баги)
- А. А. Мицюк - научный сотрудник ФКН (личная страница)
Благодарности
Факультатив проходит при поддержке компании JetBrains.