Code Complete 2 — это практическое руководство по созданию программного обеспечения. Он идет от общей картины разработки программного обеспечения к конкретным примерам кода, предоставляя достоверные данные, контрольные списки и ссылки на другие источники информации. Таким образом, широта и глубина тем подходят не только для начинающих и программистов-самоучек, но и для опытных программистов и технических руководителей.
Целью этой сводной серии является изложение более широкой картины и основных, но важных принципов, упомянутых в книге.
Несколько слов для себя: я инженер DevOps, специализирующийся на эксплуатации. Имея степень в области прикладной информатики, у меня достаточно теоретических знаний о разработке программного обеспечения. Моя повседневная работа учит меня многому о жизненном цикле программного обеспечения, сценариях и автоматизации рабочих процессов. Книга дала мне более глубокое понимание разработки программного обеспечения и улучшила мои навыки написания сценариев. Здесь я хочу поделиться тем, что я узнал или, по крайней мере, нашел интересным.
Часть I: Закладка фундамента
Что такое разработка программного обеспечения? Общие термины известны как "кодирование" или "программирование". Но помимо этого детальный дизайн, планирование, тестирование, отладка и интеграция также являются частью разработки программного обеспечения.
ИТ использует много метафор для более глубокого понимания. Здесь мы говорим о червях, троянских конях, ошибках, сбоях, брандмауэрах, фермах серверов и других красочных примерах, чтобы сделать данную тему более полной. Лучшая метафора для описания разработки программного обеспечения — реальные строительные работы. В зависимости от того, нужно ли вам построить маленькую собачью будку или небоскреб, распределение усилий, затрачиваемых на проектирование, планирование, проверку и строительство, в некоторой степени сопоставимо. Соответственно, объем работ по планированию и проектированию безопасной и критической медицинской программной системы намного выше, чем просто небольшое веб-приложение. Метафора строительства также позволяет нам использовать метафору Toolbox. Точно так же, как вы не будете использовать молоток, чтобы вставить винт, ИТ-инструменты также имеют определенные цели, которые необходимо учитывать.
Семь раз отмерь, один раз отрежь! Прежде чем начинать какое-либо строительство, мы должны к нему подготовиться. Достаточно ли у нас материалов, рабочих и оборудования? Соблюдены ли мы заданные правила? Были ли рассмотрены и одобрены наш план и чертежи? Подготовка должна быть разной для каждого проекта, но все они должны преследовать цель снизить риск. Четкое определение проблемы, официальное требование и ориентация на высокое качество в начале оказывают большее влияние на качество программного обеспечения, чем в конце. В противном случае проект может тратить время и усилия на решение не той проблемы, упускать конкретные детали и создавать неправильное решение.
Подготовку к разработке программного обеспечения можно разбить на отдельные области: функциональные требования, нефункциональные требования, архитектурные темы, качество и полнота самих требований и другие моменты. В зависимости от вашего проекта вы должны подумать об организации программы, основных классах, дизайне данных и пользовательского интерфейса, бизнес-правилах, управлении ресурсами, безопасности, производительности, масштабируемости, работоспособности, отказоустойчивости и так далее. Каждая тема представляет собой огромную область сама по себе, поэтому я ограничусь указанием важности тем, поскольку качество каждой темы определяет качество конечного продукта.
Часть I предназначена только для того, чтобы заложить основу для понимания того, что такое конструирование программного обеспечения. Следующая часть будет о создании качественного кода.