• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2023/2024

Научно-исследовательский семинар "Практические методы повышения качества программного кода"

Статус: Курс по выбору (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 4-й курс, 1-3 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для всех кампусов НИУ ВШЭ
Язык: русский
Кредиты: 3
Контактные часы: 48

Программа дисциплины

Аннотация

Курс посвящен разбору реальных примеров программного кода на языках Java, Python, Ruby, JavaScript, Rust. В каждом примере субъективно оцениваются сильные и слабые стороны, с точки зрения качества программирования, правильности использования принципов объектно-ориентированного программирования, паттернов проектирования, и чистоты кода. Занятия проходят в формате "live coding", в котором студенты представляют свой код на обсуждение, а далее всей группой проводится анализ и выработка рекомендаций по улучшению. После посещения семинаров студенты станут лучше понимать практическую ценность объектно-ориентированного подхода.
Цель освоения дисциплины

Цель освоения дисциплины

  • Практическая часть курса предполагает самостоятельную работу студентов над анализом крупных open source проектов с целью выявления закономерностей и проблем с качеством
Планируемые результаты обучения

Планируемые результаты обучения

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

Содержание учебной дисциплины

  • Halstead Complexity
  • McCabe’s Cyclomatic Complexity
  • Perceived Complexity
  • LCOMx
  • PCC
  • LCC
  • MMAC and NHD
  • Repository size
  • Forks and pull requests
  • Bugs
  • GitHub stars
  • Build time
  • Algorithmic complexity Big-O
  • Code duplication
  • Lines of Code
  • Hits of Code (Code Churn)
  • Coupling
  • Test Coverage
  • DSQI
  • Instruction path length
  • Maintainability index
  • Function Points
  • Mutation Coverage
  • Number of methods, classes, etc.
Элементы контроля

Элементы контроля

  • блокирующий Исследовательская статья
    В рамках курса студенты должны разделиться на группы по 1–3 человека. Каждая группа должна выбрать одну из исследовательских тем, предложенных на первой лекции. По выбранной теме необходимо провести исследование и оформить его результаты в научную статью на английском языке, объемом 7–12 страниц формата acmart/sigplan. Статья должна содержать обязательные разделы: Abstract, Introduction, Related Work, Method, Experimental Results, Discussion, Conclusion и References.
  • неблокирующий Работа над исследовательской статьей
    В рамках курса студенты должны разделиться на группы по 1–3 человека. Каждая группа должна выбрать одну из исследовательских тем, предложенных на первой лекции. По выбранной теме необходимо провести исследование и оформить его результаты в научную статью на английском языке, объемом 7–12 страниц формата acmart/sigplan. Статья должна содержать обязательные разделы: Abstract, Introduction, Related Work, Method, Experimental Results, Discussion, Conclusion и References.
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 3rd module
    Оценка за курс складывается из суммы баллов: Студент представил черновик статьи (4+ страниц) в конце первого модуля - 1 балл Студент представил черновик статьи (8+ страниц) в конце второго модуля - 2 балл Студент посетил 10 или более лекций - 1 Студент посетил 20 или более лекций - 2 балл Студент отправил статью на конференцию после разрешения преподавателя - 2 балл Статья принята на конференции CORE-B - 7 балл Статья принята на конференции CORE-A - 10 балл
Список литературы

Список литературы

Рекомендуемая основная литература

  • Karl Wiegers. (2013). Creating a Software Engineering Culture. Addison-Wesley Professional.

Рекомендуемая дополнительная литература

  • Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (2009). Design Patterns : Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599365

Авторы

  • Лебедев Сергей Аркадьевич
  • Буцкая Евгения Александровна