Социотехническая устойчивость в программной инженерии
Предварительные требования: Социально-технические системы
В послевоенной Японии идея о том, что человеческая ошибка может вызвать проблемы, была запретной темой. На самом деле признание ошибок считалось признаком слабости или некомпетентности. Японский подход к работе — это тот, который широко использует командную работу и сотрудничество между сотрудниками для эффективного предоставления продуктов и услуг в организации. Однако в последнее время этот подход подвергся тщательной проверке из-за опасений по поводу социотехнической устойчивости в разработке программного обеспечения. В этой статье мы обсудим, как социотехническая устойчивость может быть достигнута за счет усовершенствования операционных и управленческих процессов, направленных на решение реальных проблем, связанных с человеческими ошибками в командах разработчиков программного обеспечения:
1. Человеческая ошибка:
Человеческий фактор является частой причиной несчастных случаев. Это может быть вызвано человеческими факторами, такими как усталость и стресс, или организационными факторами, такими как плохой дизайн и неадекватные процедуры.
Систематические подходы, направленные на решение реальных проблем, связанных с человеческими ошибками, могут иметь большое значение для развития социотехнической устойчивости в разработке программного обеспечения.
Термин «человеческая ошибка» часто используется для описания ошибок, которые люди допускают при выполнении задач. Это определение, хотя и распространенное, проблематично, поскольку подразумевает, что люди виноваты, когда совершают ошибки. На самом деле человеческая ошибка является продуктом социальных, организационных и технологических факторов.
- Индивидуальный подход. Индивидуальный подход к устойчивости рассматривает человека как единое целое и предполагает, что отдельные ошибки нельзя предотвратить. Персональный подход предполагает, что люди непогрешимы, что не соответствует действительности. Человеческие ошибки можно предотвратить, если системы спроектированы так, чтобы справляться с ними таким образом, чтобы минимизировать вред для пользователей или клиентов. Перспектива человека также создает искусственное различие между людьми и системами, когда должно быть ясно, что обе сущности взаимодействуют друг с другом посредством сложных взаимодействий (например, сбой системы из-за человеческой ошибки). Это возвращает нас к нашему традиционному взгляду на разработку программного обеспечения как на разработку инструментов для людей, которые их используют, вместо того, чтобы думать о том, как эти инструменты могут помочь нам создавать более устойчивые системы в целом.
- Системный подход. Системный подход к человеческим ошибкам — это способ осмысления человеческих ошибок, который рассматривает системы, в которых работают люди, и то, как они взаимодействуют с этими системами. Этот подход фокусируется на взаимодействии между людьми и системами, которые они используют. Чтобы уменьшить количество ошибок, нам нужно понять, как происходят эти взаимодействия, чтобы мы могли их улучшить. Представление об управлении ошибками на системном уровне (SLVEM) обеспечивает основу для понимания того, как группы разработчиков программного обеспечения организуются вокруг своих целей, какую работу выполняет каждый член группы и как это вписывается в более крупные проекты или организации.
- Социотехническая устойчивость к человеческим ошибкам. Социотехническая устойчивость к человеческим ошибкам является одной из основных целей социотехнической инженерии. Этого можно достичь, развивая мышление, которое ценит безопасность, учась на ошибках и следя за тем, чтобы система была разработана для обеспечения безопасности в сложных системах.
- Культура безопасности. Концепция культуры безопасности очень важна в социотехнической инженерии. Это относится к отношениям и убеждениям, которые существуют в организации, и к тому, как сотрудники взаимодействуют друг с другом. Позитивная культура безопасности помогает гарантировать, что каждый вносит свой вклад в поддержание безопасности системы.
- Системное мышление. Системное мышление — это концепция, которая помогает социотехническим инженерам понять взаимосвязи между различными частями системы. Это можно использовать для выявления и смягчения источников риска, но также упрощает определение того, как изменения в одной части системы могут повлиять на другие части.
2. Процесс эксплуатации и управления:
Социотехническая устойчивость – это способность адаптироваться к изменениям в операционных и управленческих процессах. Это может быть достигнуто за счет применения соответствующих мер и методов, обеспечивающих проектирование всех компонентов системы с учетом их взаимодействия друг с другом, что обеспечивает ее функциональность при воздействии внешних воздействий (например, отказов).
- Операционная устойчивость: Способность деятельности, систем или процессов организации продолжать нормально функционировать, несмотря на внутренние сбои (например, дефекты программного обеспечения или аппаратные сбои). Он включает в себя как технические аспекты, такие как механизмы обнаружения и устранения неисправностей, так и организационные аспекты, такие как эффективные каналы связи между заинтересованными сторонами, участвующими в обслуживании этих систем или процессов на протяжении всего их жизненного цикла.
- Процессы управления. Процессы управления присущи организациям и определяют, как выполняются операции от имени клиентов; они включают политику в отношении методов найма персонала, требований к обучению и так далее. Эти политики управления должны быть реализованы эффективно, чтобы они не ставили под угрозу эффективность или результативность, поскольку им не хватает ресурсов, необходимых для реализации, что отрицательно влияет на уровень удовлетворенности клиентов с течением времени из-за внутренних проблем, возникающих из-за плохих возможностей принятия решений и неспособности удовлетворить требования клиентов в своевременным образом. Процессы управления в организации должны быть в состоянии эффективно управлять изменениями, чтобы поддерживать стандарты качества обслуживания, предоставляемые их персоналом на протяжении всего жизненного цикла. Систематические подходы, направленные на решение реальных проблем, связанных с человеческими ошибками, могут иметь большое значение для развития социотехнической устойчивости в разработке программного обеспечения. Нам нужно решить реальные проблемы, связанные с человеческими ошибками. Этого можно добиться путем систематического подхода к ним в качестве главного приоритета. Следующие примеры иллюстрируют, как вы можете систематически подходить к человеческим ошибкам и развивать социотехническую устойчивость в разработке программного обеспечения:
- Используйте автоматизированное тестирование с коэффициентом покрытия более 90%. Чем выше коэффициент покрытия тестами, тем лучше будет процесс разработки, потому что ошибки с большей вероятностью будут обнаружены на более ранней стадии, прежде чем они станут слишком дорогими или трудными для исправления в дальнейшем (например, когда они будут обнаружены). уже развернут). Автоматизированное тестирование также помогает сократить время ручного тестирования, поскольку разработчикам не нужно тратить время на ручную проверку своего кода на наличие ошибок; вместо этого они могут сосредоточиться на разработке новых функций (что займет меньше времени).
- Используйте парное программирование как практику, чтобы избежать человеческих ошибок. Парное программирование — эффективный способ уменьшить количество человеческих ошибок, потому что оно побуждает разработчиков общаться друг с другом во время написания кода, что не только улучшает их способность выявлять ошибки в коде, но и помогает им развивать лучшие навыки решения проблем. Это может быть особенно полезно при работе над сложными проблемами, требующими нестандартного мышления.
Вывод
В разработке программного обеспечения человеческий фактор является одной из наиболее важных частей уравнения, и поэтому его следует учитывать при реализации решений для предотвращения и уменьшения человеческих ошибок. Три шага, описанные выше, являются хорошим началом для решения этой проблемы, поскольку они касаются различных аспектов, связанных с устранением ошибок, связанных с человеческим фактором. В частности, мы рекомендуем сосредоточиться на улучшении связи с заинтересованными сторонами путем понимания их потребностей, что, в свою очередь, позволит нам разрабатывать более качественные продукты и услуги, отвечающие этим потребностям, при этом снижая риски за счет формализации процессов, связанных с анализом требований и проектированием.