Профессиональные и этические требования к специалистам по программному обеспечению

Основные проблемы, стоящие перед специалистами по программному обеспечению

В XXI столетии специалисты по программному обеспечению столкнутся с описанными ниже проблемами.

1. Проблема наследования ранее созданного ПО. Многие большие программные системы, эксплуатируемые в настоящее время, созданы много лет назад, но до сих пор выполняют свои функции надлежащим образом. Проблема наследования означает поддержку и модернизацию таких систем, причем при минимальных финансовых и временных затратах.

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

3. Проблема, порожденная требованием уменьшения времени на создание ПО. Многие традиционные технологии создания качественного программного обеспечения требуют больших временныхзатрат. Вместе с тем сегодня запросы рынка ПО и требования к программным системам меняются очень быстро. Поэтому и ПО должно меняться с соответствующей скоростью. Проблема, порожденная требованием уменьшения времени на создание ПО, заключается в том, чтобы сократить время на разработку больших и сложных программных систем без снижения их качества.

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

Подобно любым другим профессионалам, специалисты по программному обеспечению должны согласиться, что к ним предъявляется более широкий круг требований, чем простая необходимость иметь тот или иной профессиональный уровень. Они работают в определенном правовом и социальном окружении. Область инженерии программного обеспечения, как и любая другая сфера человеческой деятельности, имеет ограничения в виде местных, национальных и международных законодательств. Поэтому специалисты по программному обеспечению должны принять на себя определенные этические и моральные обязательства, чтобы стать настоящими профессионалами.

Не требует лишних пояснений утверждение, что специалисты должны быть честными и порядочными людьми. Они не должны использовать свои профессиональные навыки и возможности для деятельности, дискредитирующей профессию специалиста по программному обеспечению. Вместе с тем требования к специалистам не ограничиваются только моральными или юридическими предписаниями, в их круг также входят значительно более тонкие профессиональные обязательства.

1. Конфиденциальность. Специалист должен соблюдать конфиденциальность, т.е. не разглашать никаких сведений о работодателе и клиентах, независимо от того, подписывал он или нет какое-либо соглашение о соблюдении конфиденциальности.

2. Компетентность. Специалист не должен скрывать (или ложно представлять) свой уровень компетенции и не должен браться за работу, которая этому уровню не соответствует.

3. Защита прав интеллектуальной собственности. Специалист не должен нарушать соответствующее законодательство о защите авторских прав при использовании чужой интеллектуальной собственности (патентов и т.п.). Он также должен защищать интеллектуальную собственность работодателя и клиентов.

4. Злоупотребление компьютером. Специалист не должен, используя свой профессиональный уровень, наносить вред компьютерам других людей. Злоупотребления компьютером могут быть как относительно тривиальными (скажем, игра в компьютерные игры на машине, принадлежащей работодателю), так и очень серьезными (например, распространение компьютерных вирусов).

В разработке подобных этических обязательств большая роль принадлежит профессиональным обществам и институтам. Такие организации, как ACM (Association for Computing Machinery– Ассоциация по вычислительной технике), IEEE (Institute of Electrical and Electronics Engineers – Институт инженеров по электротехнике и электронике) и British Computer Society (Британское компьютерное общество), опубликовали кодекс профессионального поведения, или этический кодекс. Члены этих организаций принимают на себя обязательство следовать данному кодексу. Правила поведения из этого кодекса основаны на общечеловеческих этических нормах.

АСМ и IEEE совместно создали кодекс, соединяющий этические нормы и профессиональную практику. Этот кодекс существует в двух версиях: краткой, приведенной во врезке, и полной [134], раскрывающей, расширяющей и дополняющей основные положения краткой версии кодекса. Обоснование необходимости такого кодекса приведено в первых двух абзацах полной версии.

Вычислительная техника в настоящее время играет все возрастающую роль в деловой сфере, промышленности, медицине, образовании, сфере развлечений и обществе в целом. Инженерия программного обеспечения непосредственно или с помощью своих технологий вносит вклад в анализ и создание спецификации, проектирование, разработку, сертификацию, поддержку и тестирование программных систем. В соответствии со своей ролью в создании программных систем специалисты по программному обеспечению имеют значительные возможности творить добро или делать зло, позволять другим творить добро или делать зло либо влиять на других так, чтобы они творили добро или делали зло. Чтобы быть по возможности уверенным в том, что их усилия направлены только на добро, специалисты по программному обеспечению должны принять на себя обязательство относиться к инженерии программного обеспечения как к общественно полезной и уважаемой профессии. В связи с этим обязательством специалисты по программному обеспечению должны твердо придерживаться следующего Кодекса этики и профессиональной деятельности.

Кодекс содержит восемь принципов поведения и принятия решений специалистами-профессионалами по программному обеспечению, связанных с практической деятельностью, самообучением, управлением, руководствам, а также обучением студентов данной профессии. Принципы определяют этику отношений между отдельными личностями, а также в группах и организациях, разделяющих и принимающих эти принципы. Статьи каждого принципа описывают конкретные обязательства, определяющие эти отношения. Истоки этих обязательств- человеческие качества специалистов по программному обеспечению, особая моральная щепетильность, присущая людям, занимающимся инженерией ПО, и уникальные составляющие практической деятельности специалистов, реализующих методы и технологии инженерии программного обеспечения. Кодекс предлагает обязательства как предписания, предполагающие непременное выполнение, и как высокие цели, к которым должен стремиться специалист по программному обеспечению.

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

1. Общественные интересы – деятельность специалистов по программному обеспечению должна проистекать в соответствии с общественными интересами и запросами.

2. Клиенты и работодатели – деятельность специалистов по программному обеспечению должна быть направлена на удовлетворение запросов клиентов и работодателей в соответствии с общественными интересами.

3. Производство – специалист по программному обеспечению должен гарантировать, что произведенные или модифицированные им программные продукты соответствуют самым высоким, какие только возможны, профессиональным стандартам.

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

5. Управление – действия руководителей программных проектов должны подчиняться высоким этическим нормам при их руководстве разработкой и сопровождением программного обеспечения.

6. Профессия – специалист по программному обеспечению должен поддерживать на высокомуровне репутацию своей профессии в соответствии с общественными интересами.

7. Коллегиальность – специалист по программному обеспечению должен поддерживать коллег и быть достойным членом своего коллектива.

8. Личность – специалист по программному обеспечению должен постоянно учиться, чтобы соответствовать уровню своей профессии, а также должен руководствоваться высокими этическими нормами в повседневной практической профессиональной деятельности.

Конечно, в одной и той же ситуации разные люди имеют различные взгляды и принципы решения стоящих перед ними этических проблем. Например, как вы поступите, если не согласны с политикой, которую проводит руководство компании? Очевидно, это зависит от конкретного человека и сути разногласий. Что лучше – дистанцироваться от позиции компании или пересмотреть свои принципы? Если вы считаете, что эти разногласия могут породить проблемы в выполнении программного проекта, будете ли вы открыто отстаивать свою позицию перед руководством? Если вы рассчитываете работать в этой компании далее, необходимо рано или поздно решать эту нравственную проблему.

Такие этические дилеммы встают перед всеми специалистами в процессе их профессиональной деятельности. К счастью, в большинстве случаев они не имеют существенной принципиальной подоплеки и разрешаются сравнительно просто. Если же не разрешаются, значит, специалист столкнулся, скорее всего, с большой этической проблемой. В принципе ее всегда можно решить, просто уволившись с работы, но в этом случае возможно возникновение других проблем, например с материальным обеспечением семьи.

Особо трудная ситуация для специалиста возникает тогда, когда работодатель ведет себя неэтичным образом. Скажем, компания разрабатывает программную систему, критическую в отношении безопасности. Но вследствие дефицита времени были подделаны протоколы проверки системы на защищенность. Должен ли специалист в этой ситуации поддерживать конфиденциальность, т.е. неразглашение информации о работодателе, либо все же следует предупредить заказчика ПО или придать гласности тот факт, что система может быть незащищенной?

Сложность этой проблемы состоит в том, что не существует критериев абсолютной защищенности систем. Фактическая защищенность системы может быть проверена только в процессе ее длительной эксплуатации. Даже если система удовлетворяет заранее определенным критериям защищенности, это еще не означает, что она лишена ошибок и не может возникнуть каких-либо сбоев в ее работе.

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

Другая этическая проблема возникает, если вы участвуете в разработке военных или атомных систем. Многие отказываются участвовать в любых разработках, имеющих хоть какое-нибудь отношение к военной тематике. Некоторые согласны работать над военной тематикой, не связанной с производством вооружения, а кто-то считает, что национальная безопасность – достаточное основание, чтобы не иметь этических проблем при работе над системами вооружений. Здесь соответствующая этическая позиция полностью зависит от взглядов и мировоззрения конкретного человека.

В этой ситуации важно, чтобы как работодатель, так и работники заблаговременно узнали взгляды друг друга. Когда организация включается в военные или атомные проекты, руководство должно сообщить коллективу, что они должны быть готовыми принять любую работу соответствующего профиля. С другой стороны, если штатные сотрудники не хотят принимать участие в разработке военных систем, руководство не должно оказывать на них давление, принуждая к выполнению таких работ.

К вопросам профессиональных этических норм и отношений интерес возрастает на протяжении ряда последних лет. Их можно рассматривать исходя из философских категорий, описывающих базовые принципы этики, и на основе этики инженерии программного обеспечения, которая также ссылается на эти принципы.

Системные свойства программного обеспечения

Цель – дать введение рассмотреть системные свойства вычислительных систем и объяснить, почему знания в этой области важны для специалистов по программному обеспечению.

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

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

Система – это совокупность взаимодействующих компонентов, работающих совместно для достижения определенных целей.

Это определение охватывает очень широкий круг систем. Например, такая простая система, как карандаш, состоит из двух или нескольких "аппаратных" компонентов, в то время как система управления полетами может состоять из тысяч аппаратных и программных компонентов плюс операторы, которые принимают решения на основе данных, предоставляемых информационными подсистемами.

Определяющим признаком системы является то, что свойства и поведение системных компонентов влияют друг на друга чрезвычайно сложным и запутанным образом. Корректное функционирование каждого системного компонента зависит от функционирования многих других компонентов. Так, операционное обеспечение может выполнять свои функции, если только работает процессор и соответствующие аппаратные средства. Процессор может выполнять вычисления, если только корректно инсталлированы программные системы, задающие эти вычисления.

Системы часто имеют иерархическую структуру, т.е. в качестве компонентов содержат другие системы. Например, компьютерная система полиции содержит географическую информационную систему, которая предлагает информацию о месте, где случилось или может случиться какое-либо происшествие. Системы, которые являются компонентами других систем, называются подсистемами. Определяющее свойство подсистем заключается в том, что они могут функционировать самостоятельно, независимо от тех систем, в состав которых входят. Поэтому географическую информационную систему можно использовать также в других системах. Вместе с тем их поведение в составе какой-либо конкретной системы зависит, конечно, от взаимодействия с другими подсистемами.

Сложность взаимодействия между системными компонентами означает, что система не сводится просто к сумме ее составных частей. Она имеет определенные свойства, которые присущи ей именно как целостной системе. Такие интеграционные свойства не могут быть свойствами какой-либо отдельной части системы. Более того, они проявляются тогда, когда система рассматривается как единое целое. Некоторые из этих свойств можно вывести из аналогичных свойств отдельных подсистем, но чаще они являются комплексным результатом взаимодействия всех подсистем и их невозможно оценить, исходя из анализа отдельных системных компонентов.

Приведем примеры интеграционных свойств.

1. Суммарный размер системы. Это пример интеграционного показателя системы, который можно вычислить, исходя только из свойств отдельных компонентов.

2. Безотказность системы. Это свойство зависит от безотказности отдельных компонентов и взаимосвязи между ними.

3. Удобство эксплуатации системы. Это очень сложное многопараметрическое свойство, которое зависит не только от программного обеспечения и аппаратных средств системы, но также от окружения, в котором эксплуатируется система, и от системных операторов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: