Вопрос: можем ли мы как разработчики учиться на процессах в обрабатывающей промышленности? Может ли внедрение их процессов повысить успешность разработки программного обеспечения?
Ответ: да, конечно. Есть много уроков, которые разработчики программного обеспечения могут извлечь из производства, несмотря на тот факт, что разработка программного обеспечения является творческим процессом. Разработка программного обеспечения сама по себе является процессом и включает в себя множество других процессов. Чем лучше вы сможете определять и контролировать эти процессы, тем лучше вы сможете контролировать процесс разработки программного обеспечения в целом. Это не значит, что вы должны прописывать каждое нажатие клавиши, которое делает разработчик; это просто означает, что как разработчик вы естественным образом выполняете задачи в определенном порядке, и этими задачами часто можно управлять. Вот некоторые примеры:
отслеживание дефектов: что происходит с ошибкой при обнаружении или сообщении об ошибке? Вы записываете это на клочке бумаги и наклеиваете на «след»? Позже вы удаляете эти записки по одному, исследуете их и, в конечном счете, перемещаете их в «разрешенный» всплеск? Если вы делаете это каждый раз, когда получаете отчет об ошибке, у вас есть четко определенный, измеримый процесс, и вы, вероятно, гораздо лучше, чем тот, у кого есть причудливая, высокотехнологичная система отслеживания дефектов, которая настолько обременительна. что некоторые члены команды отслеживают ошибки другими способами, или нет вообще.
контроль версий: есть хороший шанс, что вы используете контроль версий там, где вы работаете, и контроль версий, очевидно, намного полезнее, когда все используют его одинаково.
дизайн продукта: Вы решаете, какие функции реализовать, бросая дротики в стену, покрытую пост-итоговыми заметками? Если так, у вас есть процесс. Я не думаю, что кто-то будет утверждать, что это отличный процесс, но, по крайней мере, это отправная точка. Если вы измените процесс, как вы можете точно знать, что ваши изменения действительно были улучшением, если вы не проводите измерения до и после? Ты не можешь
проверки кода: будет ли проверка кода полезной, если процесс проверки и критерии кодирования меняются для каждой проверки? Конечно, нет.
Жизненный цикл разработки программного обеспечения: весь анализ -> проектирование -> внедрение -> тестирование -> цикл обслуживания - это процесс, который должен быть четко определен.
В каждом из этих случаев наличие процесса позволяет измерять входные и выходные данные и определять, дают ли внесенные изменения ожидаемый эффект. Отсутствие процессов означает, что вы просто угадываете, когда пытаетесь улучшить работу. Это действительно то, что представляет собой производство, и имеет смысл заимствовать последовательные инструменты совершенствования производства, когда они уместны.
Есть целая область, посвященная определению и улучшению процессов, используемых для создания и поддержки программного обеспечения; это называется разработка программного обеспечения . Не удивительно, что у вас есть вопросы о процессе разработки, когда вы читаете о CMMI - CMMI является продуктом Института разработки программного обеспечения .
Разработка программного обеспечения уже приняла много производственных концепций:
Трудно не увидеть влияние взаимозаменяемых частей Эли Уитни как на ООП, так и на разработку компонентов .
Методы управления проектами, используемые при разработке программного обеспечения, не сильно отличаются от разработанных для производства. В качестве всего лишь двух примеров мир программного обеспечения только недавно принял концепцию Kanban, которая была разработана десятилетиями назад в Toyota, и диаграммы Ганта использовались в производстве задолго до создания первого электронного компьютера.
Методологии управления качеством, такие как Six Sigma, которые были разработаны для производства, были адаптированы для разработки программного обеспечения.
Несмотря на сложную среду, управляемую процессами, разработчик должен заниматься созданием вещей «на лету».
Вы говорите мне, что кто-то сам решит добавить патч в пакет распознавания лиц, и они собираются добавить его в рабочую сборку, не создавая сначала проблему в системе отслеживания, не проверив дизайн, проверять код в системе контроля версий или сначала проверять его на тестировании? Наш процесс требует таких вещей по очень веским причинам. Если под «на лету» вы подразумеваете «вне процесса», это недопустимо.
Делать вещи на лету противоречит духу производства.
Опять же, если «на лету» означает «вне процесса», вы правы. Но если вы думаете, что производство не требует быстрого мышления и творческого решения проблем, вы ошибаетесь. Все виды проблем возникают в процессе производства - кексы не имеют достаточное наполнения крема, окрашенные поверхности внезапно остановить прохождение скретч теста на качестве, в 20% готовых деталях не хватает важное стопорное кольцо, системы смешивания теста сломанного критическая часть ...