Технологии программирования (факультатив)

Материал из Поле цифровой дидактики



Планируемые результаты обучения (Знать, Уметь, Владеть) Целью освоения дисциплины является формирование у студентов понимания принципов разработки программного обеспечения. Результаты обучения: обучающийся понимает, как устроен процесс разработки программного обеспечения
Знать
  1. понятия технологии программирования
  2. показатели качества программных систем
  3. модели жизненного цикла программного обеспечения
  4. общие принципы и паттерны программирования
  5. стандарты разработки программного обеспечения (Гост, ISO 9001, TickIT)
Уметь
  1. Находить, описывать и классифицировать программные средства
  2. Использовать общепринятые и предлагать собственные основания для категоризации программных средств
  3. Сравнивать между собой программные средства, предназначенные для решения сходных задач.
  4. Формулировать требования к программному обеспечению.
  5. Объяснять и изображать при помощи диаграмм модели жизненного цикла программ.
  6. Использовать различные подходы к организации процесса разработки программного обеспечения.
  7. Переносить принципы разработки программного обеспечения на разработку учебных материалов и организацию учебного процесса.
  8. Использовать различные типы UML диаграмм для описания и проектирования программного обеспечения.
  9. Использовать цифровые средства и среды коллективной разработки программного обеспечения.
Владеть
  1. иерархией понятий технологии программирования
  2. классификацией языков программирования
Содержание разделов курса
  1. Классификация программных средств
  2. Определение требований к программе
  3. Жизненный цикл программы. Модели жизненного цикла
  4. Основные подходы к организации создания и использования программ. Структурное программирование. Экстремальное программирование.
  5. Модульное программирование
  6. Качество программ
  7. Стандарты ПО
  8. Проектирование ПО при помощи UML
Видео запись
Среды и средства, которые поддерживают учебный курс UML, Mermaid, Graphviz
Книги, на которых основывается учебный курс Head First. Паттерны проектирования, Мифический человеко-месяц или как создаются программные системы, СИСТЕМНАЯ ИНЖЕНЕРИЯ — 2022, Разработка компьютерных учебников и обучающих систем

Категория:ИНФ-191в - магистранты группы ИНФ-191в

Содержание разделов дисциплины:

 Description
Технология программированияТехнология программирования (programming technology) - это совокупность методов и средств, используемых в процессе разработки программных продуктов, представляет собой набор технологических инструкций, включающих в себя:
  1. указание последовательности технологических операций;
  2. перечисление условий, при которых выполняется та или иная операция;
  3. описание операций, где для каждой операции выделены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т.п.

Тема 1. Классификация программных средств

Классификация языков программирования
https://www.acm.org/publications/computing-classification-system/1998/d.3.2

Тема 2. Требования к программному обеспечению

Полезное текстовое описание программы

  1. Назначение. Что является главной функцией программы и причиной её написания?
  2. Среда. На каких машинах, аппаратных конфигурациях и конфигурациях операционной системы будет она работать?
  3. Область определения и область значений. Каковы допустимые значения входных данных? Какие правильные значения выходных результатов можно ожидать?
  4. Реализованные функции и использованные алгоритмы. Что конкретно может делать программа?
  5. Форматы ввода (вывода), точные и полные.
  6. Инструкция по работе, в том числе описание вывода на консоль и устройство вывода при нормальном и аварийном завершении.
  7. Опции. Какой выбор предоставляется пользователю в отношении функций? Каким образом его нужно задавать?
  8. Время работы. Сколько времени занимает решение задачи заданного размера на заданной конфигурации?
  9. Точность и проверка. Какова ожидаемая точность результатов? Какие имеются средства проверки точности?

Категория:DigitalTool

Требования к программе в форме UML

и другие способы создания диаграмм с целью описания процессов управления:

{{#ask: [[Категория:Diagrams]] [[Field_of_knowledge::Управление]] [[Environment::Mermaid]] [[Description::+]] | ?Description }}

Тема 3. Жизненный цикл программы. Модели жизненного цикла

Стандарты Категория:Standard + ГОСТ 19.701—90
 Description
ГОСТ 19.701—90СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ - Обозначения условные и правила выполнения - ГОСТ 19.701-90 (ИСО 5807-85). Настоящий стандарт разработан методом прямого применения международного стандарта ИСО 5807-85* "Обработка информации. Символы и условные обозначения блок-схем данных, программ и систем, схем программных сетей и системных ресурсов"
ГОСТ Р ИСО/МЭК 12207-2010, Жизненный цикл программ
 Description
ГОСТ Р ИСО/МЭК 12207-2010Системная и программная инженерия ПРОЦЕССЫ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ. Настоящий стандарт, используя устоявшуюся терминологию, устанавливает общую структуру процессов жизненного цикла программных средств, на которую можно ориентироваться в программной индустрии. Настоящий стандарт определяет процессы, виды деятельности и задачи, которые используются при приобретении программного продукта или услуги, а также при поставке, разработке, применении по назначению, сопровождении и прекращении применения программных продуктов. Понятие программного средства включает в себя встроенный фирменный программный компонент.
 Description
Жизненный цикл программЖизненный цикл программного обеспечения период времени с момента принятия решения о необходимости создания программного продукта до вывода его из эксплуатации. Модель жизненного цикла программного обеспечения структура, определяющая последовательность выполнения и взаимосвязи процессов, действия и задач на протяжении ЖЦ
  • Объяснять и изображать при помощи диаграмм graphviz, mermaid модели жизненного цикла программ.

Тема 4. Организация процесса разработки программного обеспечения

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

Tools made for.png

 DescriptionAffordances
CodeanywhereCodeanywhere: кроссплатформенная облачная ИСР, позволяющая совместно разрабатывать программные проекты с помощью веб-браузера на любом устройстве
FigmaFigma - это мощный веб-инструмент для дизайна интерфейсов, позволяющий создавать, прототипировать и коллаборировать над дизайн-проектами в режиме реального времени.1. Создание и редактирование дизайнов интерфейсов с использованием широкого спектра инструментов и функциональности, включая растровую и векторную графику, текстовые стили, границы, фильтры и многое другое.

2. Создание интерактивных прототипов с помощью функционала привязки, переходов между экранами, анимации и микроинтеракций.

3. Коллаборация с командой над дизайн-проектами в режиме реального времени, возможность совместной работы, обмена комментариями и отслеживания изменений.

4. Управление компонентами и библиотеками элементов дизайна для повторного использования и поддержания стандартов внешнего вида.
GistGist предназначен для обмена кусочками кода (и не только кода). В основе Gist лежит система контроля версий git, что делает возможным коллективную работу над материалом, поддержку форков и версионности.
  • поделиться каким-либо фрагментом кода
  • хранить и изменять какие-либо фрагменты кода (при этом каждому изменению будет присваиваться своя версия)
  • вставлять специальный HTML-код на страницы блога, чтобы сделать подсветку синтаксиса.
GitGit.png Cистема контроля версий, инструмент для управления историей исходного кода.Контроль версий и отслеживание всех изменений
Google CollabGoogle Colaboratory — среда, чтобы писать код аналогично jupyter notebook.создание исполняемых публикаций - объединение текста, кода, графики и данных
JupyterJupyter — интерактивный блокнот, ориентированным на работу со множеством сред выполнения Python, но и R, Julia, Scala и ряда других.
  • Писать код в специальной среде с подсветкой синтаксиса, исправлением ошибок и другими возможностями IDE.
  • Запускать разные участки кода в произвольной последовательности или написанную программу целиком.
  • Загружать данные, обрабатывать и преобразовывать их
  • Вставлять и выводить результаты, включая визуализацию, прямо посреди кода.
  • Делиться кодом с другими разработчиками и давать им общий доступ к проекту.
Notepad++Это текстовый редактор, который предназначен для редактирования не только текста, но и программ на различных языках программирования
  • 192px-Notepad%2B%2B_Logo.svg.png
Поддерживает несколько десятков языков программирования php, css, c++, html, javascript, java, xml, jsp, pascal, perl и др. Регулярные выражения, замены, метки, удаление отмеченных строк
OpenAI CodexOpenAI Codex — это модель искусственного интеллекта, разработанная OpenAI. Он анализирует естественный язык и генерирует код в ответ. Codex разработан на основе GPT-3, известной модели естественного языка от OpenAI. Инструмент обучен на миллиардах строк кода, а также письменного текста — именно это позволяет ему переводить человеческий язык в компьютерный.Codex лучше всего справляется с Python, но также владеет более чем десятью другими языками, такими как JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript и Shell. Codex способна по текстовому описанию сгенерировать простой сайт или игру. Например, пользователь может словами написать что-то вроде «создай веб-страницу с меню слева и заголовком сверху», а Codex выдаст соответствующий код
Python IDLEСреда разработки на языке Python, поставляемая вместе с дистрибутивом - базовый, упрощенный режим программирования на Python. Тем не менее, IDLE хороший редактор для начала программирования и понимания основ языка. В нем есть оболочка Python — интерактивный интерпретатор.Автозавершение кода, подсветка синтаксиса, подбор отступа и базовый встроенный отладчик.
RStudioсвободная среда разработки программного обеспечения с открытым исходным кодом для языка программирования R, который предназначен для статистической обработки данных и работы с графикой.Может использоваться для сохранения версий проектов на языках R, Python, C++
SAP Build AppsСреда no-code для разработки мобильных приложенийСоздание мобильных приложений профессионального уровня

Тема 5. Общие принципы разработки программного обеспечения и разработки учебных материалов


Chicago h.png

Тема 6. UML

Диаграмма классов

Диаграмма Ганта

Тема 7. Среды коллективной разработки программного обеспечения

Использовать цифровые средства и среды коллективной разработки программного обеспечения.

 Description
CoMSESCoMSES Net - Сеть для вычислительного моделирования в социальных и экологических науках. Это - открытое сообщество исследователей и преподавателей. Репозиторий - цифровое хранилище, поддерживающее исследования и передовые методы цитирования программного обеспечения, цифрового хранения, воспроизводимости и повторного использования моделей.
GitHubСоциальная сеть программистов, с возможностью хранить репозиторий проекта и все его изменения. GitHub - контроль доступа, багтрекинг, управлением задачами и вики для каждого проекта. Используется прежде всего для поддержания версий кода
GlitchСообщество для разработки веб-приложений
HabrХабр русскоязычный веб-сайт в формате системы тематических коллективных блогов (именуемых хабами) с элементами новостного сайта, созданный для публикации новостей, аналитических статей, мыслей, связанных с информационными технологиями, бизнесом и интернетом.
Modeling CommonsСообщество, участники которого создают и обмениваются моделями NetLogo.
RobloxRoblox — игровая онлайн-платформа и система создания игр, позволяющая любому пользователю создавать свои собственные и играть в созданные другими игры.
Stack OverFlowСеть создания контента в форме вопросов и ответов о программировании.
Сообщество GeoGebraСоциальная сеть, участники которой обмениваются материалами, созданными при помощи программы GeoGebra
Сообщество NetLogoСообщество пользователей, которые обмениваются моделями, написанными на языке NetLogo.
Сообщество ScratchСетевое сообщество детей и взрослых, обменивающихся своими проектами, написанными на языке Scratch
Сообщество Snap!Сообщество исследователей, учителей и учащихся, использующих в своей деятельности язык Snap! Участники могут делиться своими проектами (Share, Publish). Создавать коллекции проектов, следить с действиями других участников (following)
Сообщество StarLogoСообщества обмена моделями и объектами в среде StarLogo Nova. Участники могут использовать код проектов других участников. Создавать свои коллекции и приглашать других участников к работе над версиями своих проектов.

Критерии оценки по дисциплине

Образовательный результат Тема Задание Пример
Находить, описывать и классифицировать программные средства Классификация программных средств Принять участие в обсуждении классификации программных средств, привести собственные примеры программных средств см ACM_Digital_Library
Классификация программного обеспечения
https://www.acm.org/publications/computing-classification-system/1998
Категория:DigitalTool + Категория:Book + Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
Использовать общепринятые и предлагать собственные основания для категоризации программных средств Классификация программных средств Используя WebGrid соберите поле своих собственных представлений о программных средствах 3D exp.png
Сравнивать между собой программные средства, предназначенные для решения сходных задач. Классификация программных средств На примере сравнения средств обучения программированию Категория:DigitalTool , обучающих играх Категория:DEG , средствах создания диаграмм Категория:Diagrams , средствах анализа библиометрических данных, средах анализа данных Категория:Dataset, средах выращивания данных. TheBrain, ShinyItemAnalysis, VUE, VOSviewer + ChatbotACM (dataset), NetLogo + StarLogo Nova
Формулировать требования к программному обеспечению. Учитывать требования Гост и СанПИН Требования к программному обеспечению Познакомиться с требованиями и понятиями внутри статей ГОСТ Р 59895-2021, ГОСТ 19.106-78, Классификация требований (диаграмма). Добавить релевантные учебному курсу стандарты и диаграммы. Диаграмма курса «Технологии программирования»
Объяснять и изображать при помощи диаграмм модели жизненного цикла программ. Жизненный цикл программ Материалы статей - Стандарты Категория:Standard + ГОСТ 19.701—90 ГОСТ Р ИСО/МЭК 12207-2010, Жизненный цикл программ, Использование статьи Гистограмма для сравнения материалов по компетенциям и стандартам Категория:Standard Диаграмма для статьи Эволюционная разработка, Гистограмма
Использовать различные подходы к организации процесса разработки программного обеспечения. Организация процесса разработки программного обеспечения Описать процесс объединения нескольких средств в статье формата рецепты Категория:DigitalTool + Категория:Scripting_Tutorials + Представить данные датасета в виде графа + Использовать данные МЭШ для моделирования поведения учителей
Переносить принципы разработки программного обеспечения на разработку учебных материалов и организацию учебного процесса. Общие принципы разработки программного обеспечения и разработки учебных материалов Использовать навыки создания диаграмм при описании учебного процесса. Создать в вики план - диаграмму учебного занятия, использую формат IMS Global LD - акты, действия, акторы, средства деятельности IMS Global LD, Learning Design, VUE
Использовать различные виды UML диаграмм для описания и проектирования программного обеспечения UML диаграммы в проектировании программного обеспечения Создание и описание собственных UML диаграмм Категория:Diagrams
Использовать цифровые средства и среды коллективной разработки программного обеспечения. Среды коллективной разработки программного обеспечения Действия на сайтах коллективной разработки программного обеспечения. Комменты со ссылками на профайлы и собственные проекты Stack OverFlow, GitHub, Scratch, Modeling Commons, Snap!