Главная страница
Навигация по странице:

  • 2. Коллективный характер разработки программного обеспечения.

  • 3. Психологические факторы при формировании

  • курсовая работа. Учебное пособие по дисциплине технология разработки программного обеспечения специальность Программирование в компьютерных системах


    Скачать 7.57 Mb.
    НазваниеУчебное пособие по дисциплине технология разработки программного обеспечения специальность Программирование в компьютерных системах
    Анкоркурсовая работа
    Дата08.01.2023
    Размер7.57 Mb.
    Формат файлаdoc
    Имя файла2_5397965015586183048-7.doc
    ТипУчебное пособие
    #877236
    страница26 из 30
    1   ...   22   23   24   25   26   27   28   29   30
    Глава 19. Коллективная разработка ПО
    1. Особенности больших программных проектов
    Можно выделить 12 свойств или характеристик ПИ, оказывающих основное влияние на процесс его создания: функция, размер, эффективность, практичность, устойчивость к сбоям аппаратуры (восстанавливаемость), кор­ректность (правильность), график разработки (ограниченное время), людские ресурсы, материальные ресурсы, в том числе инструментальные средства, стоимость, архитектура, документа­ция. Рассмотрим каждое из этих свойств подробно.

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

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

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

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

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

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

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

    Создание любого ПО невозможно без использования того, что называется инструментально-технологическим обеспече­нием разработки ПО. Таким образом, каждое ПО характеризу­ется не только трудовыми, но и материальными ресурсами, необходимыми для его создания. Одной из важнейших (и сегодня единственной) интегральной характеристикой ПИ является стоимость в денежном выражении.

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

    Документированность ПИ является, пожалуй, основной ха­рактеристикой, облегчающей сопровождение и модификацию ПИ.

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

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

    Сравнение эффективности работы бригад программистов по целям в решении задач

    Оценки (1 — наилучшая, 5 — наихудшая)



    бри­гады

    Цель, поставленная при

    решении задачи

    по

    затра­там

    труда

    по длине программы

    по объему использованной

    памяти

    по чи­табельности

    программ

    по четкости выходных данных

    суммар­ный

    вес

    1. Оптимизировать затраты

    труда14 4 5 3 17

    2. Оптимизировать длину

    программы 2 1 2 3 5 3

    3. Оптимизировать объем

    требуемой памяти 5 2 1 4 4 6

    4. Получить читабельную

    (ясную) программу 4 3 3 2 2 14

    5. Добиться четкости

    выходных данных 3 5 5 1 1 15

    ______________________________________________________________________________________________________

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

    2. Коллективный характер разработки программного обеспечения.

    Бригада главного программиста

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

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

    Пусть объем проектируемого ПИ оценивается в 50000 строк (исходных команд), а производительность одного программиста примем равной 5000 строк в год. Пусть, далее, срок разработки данного ПИ ограничен двумя годами. Тогда, очевидно, для создания такого ПИ достаточно пяти программистов. Однако, поскольку составные части ПИ (модули) взаимосвязаны, то при их создании программисты должны взаимодействовать между собой. Пусть время, затраченное на взаимодействие с каждым коллегой, обходится каждому программисту в 250 строк/год, тогда в соответствии со схемой их взаимодействия, представлен­ной на рис. 1 а, производительность каждого программиста составляет только 4000 строк/год. Таким образом, для реализации проекта в 5000 строк в течение двух лет необходимо уже не пять, а восемь программистов, производительность каждого при этом составляет только 3250 строк/год. Так как для успешной работы такой группы необходим руководитель, то окончательно имеем группу из девяти человек, производительность каждого при этом будет составлять всего 3000 строк/год .

    Хотя приведенный пример и носит иллюстративный характер, так как производительность труда программистов, оцениваемая числом строк в единицу времени, по данным Дж. Фокса может различаться на 2 порядка, он, тем не менее, отражает суть проблемы, называемой «коммуникационным взрывом». В настоя­щее время существуют методы ограничения влияния коммуника­ционного взрыва и повышения производительности труда про­граммистов. Одним из таких методов является организация работ в группе по принципу хирургической бригады — бригады главного программиста. Как правило, главный программист — это высоко­квалифицированный специалист с хорошими организаторскими способностями. Его производительность может в несколько раз превышать производительность остальных членов бригады. Воз­главляя бригаду, он одновременно является и техническим руководителем проекта. В состав бригады могут входить также администратор, старший программист и библиотекарь. Поддерживая тесную связь с главным программистом, стар­ший программист разрабатывает наиболее сложные компоненты ПИ, осуществляя при этом взаимодействие с остальными членами бригады.

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


    Рис 1. Разработка программного обеспечения группой программистов: а— из 5 человек, б — из 9 человек, в — бригадой главного программис­та из 5 человек
    Что касается оптимальной численности бригады главного программиста, то большинство специалистов единодушны в том, что число членов бригады должно быть равным 7±2.

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

    Относительно небольшое число организационных принципов существенно отличает структуру разработки большого про­граммного проекта от общепризнанной структуры промышленного производства.. Рассмот­рим основные компоненты этой схемы более подробно.

    1. Руководство определением требований.

    2. Отдел или группа руководителя программного проекта (в некоторых организациях эта служба называется руководством заказа) следит за всеми экономическими, организационными и хозяйственными вопросами, в том числе за вопросами материально-технического обеспечения.

    3. Непосредственно проектирование возглавляется главным архитектором проекта и его службой. Главный архитектор не заменяет и не подменяет руководителя проекта. Его функции ограничиваются научно-технической стороной разработки, т. е. наиболее творческой составляющей создания ПИ.

    4.Отдел разработки ПО состоит из описанных выше бригад главного программиста, которые в случае необходимости могут группироваться по отдельным подсистемам или иным компонентам ПИ. Руководитель отдела обеспечивает оперативное управление всеми этими бригадами программистов.

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

    6. Группа или отдел качества (надежности) создается на самом раннем этапе разработки ПИ. Она является самостоятель­ным подразделением, чем обеспечивается большая объективность тестирования и оценки качества.


    Организационная структура разработки программного обес­печения

    Следует отметить, что решающее влияние на процесс проектирования и организацию коллективной работы программистов оказывает выбранная модель проектирования – модель быстрой разработки приложений (RAD), классический жизненный цикл, экстремальное программирование (ХР). Подробно эти модели представлены ранее, в главе, посвященной жизненному циклу программ, стратегиям и моделям конструирования программного обеспечения.
    3. Психологические факторы при формировании программистских коллективов

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

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

    • в 52% случаев — неправильные действия руководителя;

    • в 33% случаев — психологическая несовместимость сотруд­ников;

    • в 15% случаев — профессиональная некомпетентность и другие недостатки подбора и расстановки кадров.

    Если же учесть, что под неправильными действиями по отношению к подчиненным понимаются невнимание к сотрудни­кам, неуместные публичные сообщения об их недостатках и промахах и т. д., в результате чего 40—50% подчиненных в течение 2—3 месяцев работают хуже; что не использование возможности публично заслуженно поощрить работника в 87% случаев приводит к тому, что этот работник не улучшает свою работу, т. е. не полностью реализуются его потенциальные возможности; а также учесть, что при подборе и расстановке кадров психологические аспекты также играют важную роль, то становится понятным, что примерно в 90% случаев причиной конфликтных ситуаций, существенно снижающих эффективность работы, является неучёт психологических факторов.

    Особенно это относится к общностям людей, характеризуемым высоким уровнем образованности и самосознания сотрудников, к которым относятся программистские коллективы.

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

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

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

    Профессионализм человека находится в тесной связи с его личностными особенностями. Психологические исследования по­казали, что эффективность деятельности у лиц с ярко выраженной подвижностью нервной системы и у тех, кто характеризуется инертностью нервных процессов, оказалась на одинаковом уровне в силу того, что «инертные» выработали определенный индивиду­альный стиль деятельности, который позволял уделять большее внимание профилактике используемых средств, и это способство­вало успешной деятельности, в то время как другие выдавали больше продукции благодаря высокой скорости в работе. Оптимальное сочетание профессионально значимых качеств характерно для сработанности производственных коллективов. Существенное влияние на сработанность коллектива, взаимную совместимость оказывают личностные качества работников. Установлено, что совместимость выступает как сходство одних черт партнеров и контраст других. При этом сходными чаще всего являются те характеристики, которые базируются на врожденных особенностях индивидов (например, обусловленные свойствами нервной системы), а обусловленные воспитанием (интересы, характер) — контрастны.

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

    | Данные по психофизиологической совместимости можно получить с помощью анкетных методик. Одной из таких методик, например, является «опросник темперамента» Яна Стрелляу, предназначенный для изучения свойств нервной системы на уровне деятельности. Определив тип темперамента человека, можно судить о его совместимости с людьми, характеризуемыми другими типами: «Холерики достаточно коммуникабельны, хотя и уступают в этом сангвиникам. Обычно стараются играть роль лидеров. Плохо уживаются с меланхоликами и другими холерика­ми. Меланхолики склонны к уединению, а в реакциях общения напоминают формы коммуникативного поведения флегматиков, не стремятся к лидерству, более легко уживаются с флегматиками и сангвиниками»

    К анкетным методикам также относится «личностный опрос­ник» Г. Айзенка , который определяет такие факторы личности, как интроверсия, экстраверсия и нейротизм. Опросник предполагает существование взаимосвязи между индивидуально-типологическими особенностями высшей нервной деятельности и свойствами личности, хотя эта зависимость и не является абсолютной. Вводя в опросник шкалу нейротизма, автор предло­жил разделение типов не только по экстраверсии — интроверсии, но и стабильности. Шкала стабильности получила название нейротизм. «Нейротизм — понятие, близкое к эмоциональной лабильности, неуравновешенности, тревожности. Чем ниже индекс нейротизма, тем личность более эмоционально устойчива, менее тревожна».

    Для экстраверсии, определяемой с помощью методики, ха­рактерно общительное, активное, оптимистическое, самоуверенное поведение; для интроверсии — поведение необщительное, пассив­ное, вдумчивое, спокойное. Человеку с высшим показателем неустойчивости свойственно поведение под влиянием настрое­ния — вспыльчивое, в то время как устойчивым индивидам — спокойное, беззаботное, надежное, непринужденное.

    По данным исследования наибольшую устойчивость межличностной привлекательности испытывают пары: интро­верт — интроверт и интроверт — экстраверт. Наиболее часто испытывают взаимное неприятие пары экстраверт — экстраверт. Межличностную привлекательность скорее будут испытывать лица, имеющие одинаково пониженную экстраверсию, нежели одинаково повышенную экстраверсию.

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

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

    • адекватное распределение функций в группе в соответствии с индивидуальными особенностями и профессиональной специали­зацией;

    • выработка умений, навыков совместной деятельности, организации эффективных взаимодействий;

    • координирование совместной деятельности;

    • решение проблемы совместной деятельности.

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

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

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

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

    1. анализ деятельности;

    2. формирование организационной структуры;

    3. стабилизация отношений.

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

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

    Намечая программу дальнейших работ, следует кратко остановиться на главных направлениях исследований.

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

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

    Очевидно, в полном объеме психологические особенности формирования коллектива проявляются в такой модели конструировании, как экстремальное программирование (ХР - процесс), поскольку именно там предъявляются особые требования к профессионализму, доверию, способности работать в коллективе. (ХР-процесс описан достаточно полно в главе, посвященной стратегиям и моделям конструирования программного обеспечения).
    1   ...   22   23   24   25   26   27   28   29   30


    написать администратору сайта