Научная статья на тему 'Проблемы образования в программной инженерии'

Проблемы образования в программной инженерии Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
377
87
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
РАЗРАБОТКА ПРОГРАММ / ПРОГРАММНЫЕ КОМПЛЕКСЫ / ПРОГРАММНАЯ ИНЖЕНЕРИЯ / КАЧЕСТВО ПРОГРАММ / УПРАВЛЕНИЕ СЛОЖНЫМИ ПРОЕКТАМИ / SOFTWARE DEVELOPMENT / SOFTWARE / PROGRAM ENGINEERING / PROGRAM QUALITY / MANAGEMENT OF COMPLEX PROJECTS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Липаев В. В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Problems of education in software engineering

The basic scientific, methodological and technological problems of software engineering which define life cycle of modern complicated program complexes are considered. They are: maintenance of software products quality; safety of application and reduction of risk of products; economy of manufacture of complicated program complexes; standartization of processes of software products creation; the human factors influencing the life cycle of software; forming teams and training qualified experts in the field of software engineering. Methods and ways of solving these problems are presented.

Текст научной работы на тему «Проблемы образования в программной инженерии»

нального образования Российской Федерации. Приказ № 4452 Минобразования РФ от 18 декабря 2002 г.

4. Об использовании дистанционных образовательных технологий. Приказ № 137 Минобрнауки России от 06 мая 2005 г.

ПРОБЛЕМЫ ОБРАЗОВАНИЯ В ПРОГРАММНОЙ ИНЖЕНЕРИИ

В. В. Липаев, д. т. н., проф., главный научный сотрудник Тел.: (499) 196-63-65, e-mail: alexlip@mail.ru Институт системного программирования РАН

The basic scientific, methodological and technological problems of software engineering which define life cycle of modern complicated program complexes are considered. They are: maintenance of software products quality; safety of application and reduction of risk of products; economy of manufacture of complicated program complexes; standartization of processes of software products creation; the human factors influencing the life cycle of software; forming teams and training qualified experts in the field of software engineering. Methods and ways of solving these problems are presented.

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

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

Keywords: software development, software, program engineering, program quality, management of complex projects

Введение

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

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

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

Разработки комплексов программ для оборонных систем с самого начала отличались организованностью и тесным взаимодействием с заказчиками. При этом требования заказчиков к функциям и качеству программных продуктов хронически превышали возможности разработчиков и ресурсы доступных вычислительных машин. Это стимулировало совершенствование тех и других и необходимость формализации технологий применявшейся тогда программной инженерии. Одновременно повышалась производительность труда специалистов и качество программного продукта. Результатами этих усилий в разработке сложных комплексов программ для оборонных систем стало то, что в период 60—90-х годов основные отечественные системы вооружения с использованием вычислительной техники имели функциональные характеристики и качество, практически адекватные аналогичным оборонным системам в США.

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

Руководящий орган страны в области информатики (Министерство связи и информатизации) не занимается координацией и управлением работами в области программной инженерии для различных сфер применения. Программные средства для науки и промышленности, которые являются важнейшей интеллектуальной частью всех систем информатизации, хотя и обозначены в названии министерства, оказались вне его интересов. В результате многие современные проекты сложных ПС оказываются неконкурентоспособными, недостаточного качества и требуют длительной доработки (например, ГАС «Выборы») для устранения системных и технических дефектов и ошибок.

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

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

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

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

Основные проблемы программной инженерии

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

Для небольших относительно простых программ во многих случаях достаточно достоверными могут быть интуитивные оценки требуемых экономических ресурсов, выполняемые опытными руководителями, реализовавшими несколько аналогичных проектов. Однако интуитивные оценки руководителями размеров и сложности программных проектов (программирование «в большом»), как правило, сопровождаются большими ошибками при планировании экономических характеристик: сроков, трудоемкости и стоимости создания продуктов. Это во многих случаях приводит к значительному запаздыванию завершения разработок и к превышению предполагавшихся затрат. Практика последних лет показывает, что вследствие пренебрежения тщательным экономическим обоснованием до 15% проектов сложных программных комплексов не доходит до завершения, а почти половина сложных проектов не укладывается в выделенные ресурсы, бюджет и сроки, не обеспечивает требуемых характеристик качества. Типичны ситуации, когда отставание сроков внедрения промышленных систем управления и обработки информации полностью зависит от неготовности для них программных продуктов.

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

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

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

Благодаря развитию операционных систем и инструментальных средств универсальных персональных компьютеров и серверов накапливаются готовые программные компоненты и сокращается необходимость их программирования. Это приводит к увеличению роли интеграции таких компонентов, соответствующих методов и инструментария программной инженерии. Однако вследствие их принципиальной новизны и сложности они трудно воспринимаются традиционными программистами малых компонентов и множеством преподавателей отечественной высшей школы. Коренные отличия между методами и инструментарием индивидуального, «художественного» программирования небольших программ и технологией планомерной, регламентированной, инженерной разработки крупных программных продуктов приводит к тому, что последние медленно осваиваются и входят в практику слаженной работы больших коллективов специалистов. Эти обстоятельства отражаются на существенном отставании от мирового уровня по конкурен-тоспособности, количеству и качеству отечественных программных продуктов. Оригинальные отечественные программные продукты составляют менее 1% на мировом рынке.

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

Технологические проблемы программной инженерии

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

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

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

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

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

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

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

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

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

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

- распределению сотрудников разной профессиональной специализации по производственным этапам, компонентам и видам работ в жизненном цикле комплексов программ;

- планированию и методам работы в условиях ограниченных ресурсов, по графикам в реальном времени с заданными сроками, контролем качества и документированием результатов;

- тестированию, испытаниям и гарантии качества, надежности компонентов и программного продукта в целом.

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

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

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

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

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

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

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

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

— при формировании коллектива и выполнении совместных групповых работ необходимо учитывать и использовать особенности каждого специалиста, его профессиональную квалификацию и психологические характеристики;

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

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

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

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

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

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

Проблемы отбора и обучения специалистов в программной инженерии

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

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

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

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

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

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

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

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

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

— спецификаторы требований к компонентам и комплексам программ;

— разработчики программных модулей и компонентов - программисты;

— системные интеграторы компонентов в комплексы программ;

— тестировщики компонентов и комплексов программ;

— испытатели программных продуктов;

— управляющие сопровождением и конфигурацией комплексов программ;

— документаторы и архиваторы программных продуктов.

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

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

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

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

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

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

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

В последние годы в некоторых отечественных вузах проявился интерес к программной инженерии и делаются попытки ввести такой курс в планы обучения студентов. В качестве основы для разработки учебных планов рассматриваются: международный стандарт Software Engineering Body of Knowledge (SWEBOK - ISO 19759:2005) - «Свод знаний по программной инженерии», а также Software Engineering 2004 (SE 2004): Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering - «Рекомендации по преподаванию программной инженерии и информатики в университетах» (пер. с англ. - М., 2007). Документы ориентированы на планирование обучения студентов и разработку учебных планов по программной инженерии в составе полной вузовской программы по информатике или информационным системам разных классов. Издан ряд переводов на русский язык с английского учебников по программной инженерии. На сайте Института системного программирования РАН www.ispras.ru в разделе Публикации аннотированы 4 учебника и 12 монографий профессора В. В. Липаева по циклу проблем программной инженерии. С полными текстами этих книг можно ознакомиться по адресу www.iqlib.ru, там же приводятся перечни переводной литературы.

МСЭ призывает обеспечить широкополосный доступ в интернет для половины населения мира к 2015 году

25 мая 2010 года на Всемирной конференции по развитию электросвязи (ВКРЭ-10), которая проходит в Хайдарабаде, был представлен Отчет Международного союза электросвязи (МСЭ) о развитии всемирной электросвязи/ИКТ 2010 года. В отчете содержится среднесрочный анализ прогресса, достигнутого в - обязательства, принятого—создании глобального информационного общества к 2015 на Всемирном саммите по информационному обществу (ВСИО), состоявшемся в Женеве в 2003 году и Тунисе в 2005 году. Подробнее в первоисточнике: Источник: МСЭ (http://www.itu.int/publ/D-IND-WTDR-2010/en)

i Надоели баннеры? Вы всегда можете отключить рекламу.