ecampus_2sem / Лекция 8
.docxОсновы программной инженерии
Лекция 8. Кодирование (конструирование) ПО
Разогрев
Обсудить вопросы:
-
С чего начинается процесс разработки программного обеспечения?
-
А чем заканчивается?
-
А что еще нужно сделать, чтобы создать хороший программный продукт?
Определение (SWEBOK)
Детальное создание рабочей программной системы посредством комбинации кодирования, верификации (проверки), модульного тестирования (unit testing), интеграционного тестирования и отладки.
Единственный вид деятельности, который выполняется обязательно. Это крупная часть процесса – от 30% до 80%. Занимает центральное место в процессе разработки.
Тесно связано с проектированием и тестированием. Границы очень размыты. Можно считать, что включает в себя в той или иной степени все остальные виды деятельности (анализ, проектирование, сопровождение, планирование, интеграцию, тестирование).
В рамках этой деятельности создается основная масса активов проекта. Исходный код – часто, единственно верное описание программы.
Является наиболее инструментально-насыщенной.
Фундамент конструирования
-
Минимизация сложности (в первую очередь в направлении читаемости кода)
-
Ожидание изменений
-
Конструирование с возможностью проверки (техники: ревью кода, модульное тестирование, структурирование кода, применение автоматизированных средств тестирования, ограниченное применение сложных для понимания язвковых структур)
-
Применения стандартов (оформление и содержание документов, языки программирования, стили кодирования, платформы, инструменты). Внутренние и внешние стандарты.
Управление конструированием
-
Модели конструирования (XP, RUP, Scrum…). Методологии. Практики. Разные типы проектов – разные подходы к конструированию.
-
Планирование конструирования.
-
Измерения
Практика конструирования
-
Проектирование в конструировании
-
Языки конструирования
-
Кодирование. Техники:
-
Создание легко читаемого кода. Использование соглашений.
-
Использование классов, перечислений, переменных, именованных констант и др. выразительных сущностей.
-
Организация кода (выражения, шаблоны, модули, пакеты, классы)
-
Использование структур управления
-
Обработка ошибок
-
Обеспечение безопасности
-
Управление ресурсами (в т.ч. при параллельном доступе)
-
Документирование кода
-
Производительность
-
Рефакторинг
-
-
Тестирование. Модульное тестирование. Интеграционное тестирование.
-
Повторное использование
-
Качество
-
Тестирование
-
TDD
-
Пошаговое кодирование
-
Assertions
-
Отладка
-
Ревью кода
-
Статический анализ
-
-
Интеграция
Если останется время:
Метафора конструирования
-
Литературная
-
Сельскохозяйственная
-
Жемчужина
-
Строительная
Хорошая/плохая метафора. Комбинирование метафор.