Анализ системы знаний у ИТ–специалистов
Вопрос обучения специалистов, занимающихся разработкой и внедрением информационных технологий (ИТ- специалистов), дискутируется много лет [22-28]. Считается, что обучение должно быть поставлено таким образом, чтобы ИТ - специалисты обладали не только фундаментальными знаниями в области computer science, но и достигали баланса между эффективными и жесткими сроками, широтой функциональных возможностей продукта и его низкой ценой, многообразием потребностей пользователей и ограничениями архитектур, постоянно повышали свою квалификацию. Во всем мире сохраняется высокая потребность в квалифицированных специалистах в области ИТ (информационных технологий). Сфера образования должна готовить специалистов, которые могли бы приступать к производственной деятельности сразу после получения диплома для удовлетворения этой потребности.
Одной из наиболее серьезных проблем, является подбор специалистов на руководящие должности: директоров информационных служб, руководителей проектов и технологов. Руководители бизнес–проектов отмечают, что выпускники технических специальностей университетов не имеют навыков управления и знаний современных технологии, что не позволяет им управлять проектами в области ИТ. Специалисты, обладающие навыками управления, как правило, не обладают актуальными фундаментальными знаниями, не знают специфики информационных и компьютерных ресурсов и зачастую пытаются решить проблемы проекта с помощью стандартных инженерных или управленческих методов, что приводит к серьезным управленческим ошибкам. Как свидетельствует статистика [1], в итоге более 42% проектов проваливаются или не укладываются в заданную стоимость и сроки.
Другой серьезной проблемой является, как указывалось выше, существующие отличия программной инженерии от классических инженерных дисциплин. Постоянное изменение предмета изучения и большой объем фундаментальных знаний, для непосредственного создания информационных систем требуются знания. Современный ИТ-специалист, в первую очередь, сам использует богатый арсенал программных средств, в результате производительность труда возросла многократно, и значительно возросла ответственность, лежащая на каждом специалисте и требования к его квалификации. С другой стороны информационные системы тоже изменились, они стали значительно сложнее, объем требуемых знаний для построения и использования настолько возрос, что потребовалась значительная специализация ИТ-специалистов для обеспечения достижения необходимых результатов. Как правило, большинство систем требует эффективной работы большого коллектива высококвалифицированных специалистов.
Таким образом, ИТ-специалисты должны знать основополагающие принципы и системные подходы к решению вопросов разработки, внедрения и вывода информационных систем из эксплуатации, управления требованиями [9], рисками, качеством и конфигурацией [13], интеграцией информации/компонентов [11], тестированием и метрическим анализом готовых систем [13]. ИТ-специалисты должны уметь эффективно работать в команде разработчиков, выбирать адекватные задачам процессы и технологии. Для распределенных проектов особые требования предъявляются к навыкам невербальной коммуникации.
ИТ-специалисты, занимающие руководящие должности, должны знать общие методы, стандарты ЖЦ ПО и качества, инструменты проектирования компьютерных систем [5–12], а также инфраструктуру организации-разработчика (оборудование, связи, интерфейсы и т.п.), уровни зрелости организации (коллектива) в соответствии с моделью CMM (Capability Maturity Model [29, 30]), базовые понятия программной инженерии SWEBOK [4] и другие действующие отечественные и международные стандарты.
Ключевыми дисциплинами получения знаний студентов на современных факультетах информатики, ориентированных на разработку ПО, являются: программирование и языки программирования, как формальные математические объекты, дискретная математика Кнута, основы математической логики, введение в формальную семантику Хоара, теория алгоритмов и основы построения ЯП. Получаемый такой базис знаний способствует формированию математического мышления и формального подхода к процессам разработки ПО.
С точки зрения когнитивной психологии требуется не только преподавание этих дисциплин, но и применение теоретических знаний на практике. Например, проведение силами студентов разработки некоторого прототипа проекта с использованием идей объектно-ориентированного или компонентного проектирования с повторным использованием готовых объектов и компонентов согласно ЖЦ создания программного продукта. Прототип может быть собран из готовых компонентов и на нем отработаны функции, определенные в требованиях к системе. При реализации долговременного проекта, в процессе разработки могут быть определены стандарты на компоненты, модели качества, новые методы проверки надежности компонентов, а также подходы к определению уровня зрелости по модели СММ, соответствующей оценки деятельности разработчиков этого проекта. Таким образом, в процессе обучения студентами приобретаются не только теоретические знания, но и умение их использовать при выполнении различных ролей в группе разработчиков ПО, создании отдельных версий проекта, проведении их качественного анализа и оценки заданных в требованиях показателей качества.