За многолетний опыт разработки программного обеспечения у меня была возможность поработать с несколькими блестящими исследователями и инженерами из других областей. Часто они в конечном итоге используют свой опыт для написания очень умного кода, который в конечном итоге становится неуправляемым беспорядком по мере изменения требований и роста проекта.

Несмотря на их технические знания и способность писать код, я заметил общий пробел в их понимании фундаментальных концепций разработки программного обеспечения и шаблонов проектирования. Эта серия статей «Разработка программного обеспечения 1XX» призвана восполнить этот пробел и служить руководством для тех, кто имеет базовые знания о программировании и стремится расширить свой набор навыков, включив в него разработку программного обеспечения. Ресурсы и книжные рекомендации оставлены для желающих копнуть глубже.

Программист против инженера-программиста: в чем разница?

Программная инженерия — это процесс проектирования, разработки, тестирования и обслуживания программных систем. Разработка программного обеспечения так же связана с людьми, как и с кодом.

Ключевые основы разработки программного обеспечения, которые я рассмотрю в этой серии, включают:

  1. Тестирование: тестирование программного обеспечения является жизненно важным аспектом написания хорошего программного обеспечения. Он включает в себя такие методы, как модульное тестирование, интеграционное тестирование, приемочное тестирование и разработка через тестирование (TDD).
  2. Шаблоны проектирования. Шаблоны проектирования — это многократно используемые решения распространенных проблем проектирования программного обеспечения. Примеры шаблонов проектирования включают Model-View-Controller (MVC), Singleton и Factory Method.
  3. Сопровождаемость и документация.Сопровождаемость — это способность программного обеспечения легко изменяться и обновляться с течением времени в соответствии с изменяющимися требованиями. Документация является важным аспектом ремонтопригодности.
  4. Совместная работа и контроль версий. Контроль версий — это система, которая фиксирует изменения в файле или наборе файлов с течением времени, позволяя разработчикам вызывать определенные версии и отслеживать изменения, внесенные несколькими участниками.
  5. Архитектура программного обеспечения. Под архитектурой программного обеспечения понимается общая структура и организация программной системы. Он включает в себя высокоуровневые проектные решения, влияющие на ремонтопригодность, масштабируемость и производительность программного обеспечения.
  6. Упаковка и развертывание. Упаковка — это процесс создания пакета распространения программного обеспечения, включающего все необходимые компоненты, библиотеки и зависимости, необходимые для работы программного обеспечения на предполагаемой платформе. Упаковка помогает гарантировать, что программное обеспечение легко распространять, а также легко поддерживать и обновлять.
  7. Процесс разработки программного обеспечения. Процесс разработки программного обеспечения включает ряд шагов, которые разработчики программного обеспечения выполняют для создания высококачественного программного обеспечения. Этот процесс включает в себя сбор требований, проектирование, разработку, тестирование, развертывание и обслуживание. Процесс разработки программного обеспечения также включает в себя такие методы, как проверка кода и запросы на извлечение, чтобы убедиться, что код имеет высокое качество и соответствует стандартам, установленным командой разработчиков.

Обратите внимание, что в этом списке нет пункта «программирование». Если вы будете следовать вышеперечисленным атрибутам, естественным образом последует хороший, чистый код, с которым легко работать или оптимизировать.

Далее в серии: