Отметим, что разработка информационных систем предполагает изучение работы с СУБД, что является достаточно обширной и сложной темой, достойной самостоятельного изложения в рамках соответствующего учебного курса [6].
Каждый проект, независимо от сложности и объема работ, проходит в своем развитии определенные фазы, стадии, этапы – от возникновения идеи до полного завершения проекта [8]. Выделим в общем виде следующие фазы развития прикладного расчетного и информационного ПО:
формирование концепции;
разработка технического задания;
проектирование;
разработка или изготовление;
ввод программных средств в эксплуатацию.
Начальные фазы проекта, как правило, имеют существенное влияние на достигаемый результат. В них принимаются основные проектные решения. По экспертным оценкам специалистов, обычно 30 % вклада в конечный результат проекта вносят фазы концепции и технического задания; по 20 % – фазы проектирования и разработки, 30 % – фаза завершения проекта. Вторую и частично третью фазы принято называть фазами системного проектирования, а последние две (иногда совместно с фазой проектирования) – фазами реализации.
Главным содержанием работ на первоначальной концептуальной фазе проектирования являются:
формирование идеи, постановку целей;
формирование ключевой команды проекта;
изучение мотивации и требований заказчика и других участников;
сбор исходных данных и анализ существующего состояния;
определение основных требований и ограничений, требуемых материальных, финансовых и трудовых ресурсов;
сравнительную оценку альтернативных вариантов решения задачи;
представление предложений, их экспертизу и утверждение.
Главной задачей фазы технического задания является разработка такого технического предложения, которое бы в переговорах с заказчиком плавно и непротиворечиво становилось техническим заданием. Здесь имеется в виду, что заказчик, как правило, ожидает абсолютной адекватности предметной области и разрабатываемого ПО, а также полной функциональности при любом наборе исходных данных. Поэтому очень важно на этом этапе определить границы применения разработанной программы и четко оговорить ее функциональные и сервисные возможности. Общее содержание работ этой фазы:
разработка основного содержания и базовой структуры проекта;
разработка и утверждение технического задания;
планирование и декомпозиция базовой структурной модели проекта;
составление сметы и бюджета проекта, определение потребности в ресурсах;
разработка календарных планов и укрупненных графиков выполнения работ;
подписание контракта с заказчиком;
ввод в действие средств коммуникации участников проекта и контроля за ходом работ.
Среди работ этой фазы стоит выделить определение границ применения разработанного ПО, списка и текста сообщений о внештатных ситуациях.
На фазе проектирования формируются основные информационные структуры, определяются подсистемы и их взаимосвязи, выбираются наиболее эффективные способы выполнения проекта и использования ресурсов. Характерные работы на этой фазе:
выполнение базовых проектных работ;
разработка частных технических заданий;
выполнение концептуального проектирования;
составление технических спецификаций и инструкций;
представление проектной разработки, экспертиза и утверждение;
Фаза разработки, пожалуй, наиболее трудоемкая стадия проектирования. Здесь осуществляется разработка запланированных подсистем, их объединение и тестирование, а также координация и оперативный контроль выполнения проектных работ. Основное содержание:
Любой программный продукт всегда разрабатывается как некоторый проект. Многие особенности управления проектами и фазы разработки проекта (фазы жизненного цикла) являются общими, не зависящими не только от предметной области, но и от характера проекта. Для сложного понятия (в частности, для проекта) трудно дать однозначное и исчерпывающее определение. Согласно [8], будем руководствоваться следующей формулировкой.
Проект – это ограниченное по времени целенаправленное изменение отдельной системы с изначально четко определенными целями, достижение которых определяет завершение проекта, а также с установленными требованиями к срокам, результатам, риску, рамкам расходования средств и ресурсов и к организационной структуре.
И
сходя
из данного определения, проект можно
рассматривать как некий динамический
объект (рис. 1.1). Эффективность выполнения
проекта достигается путем управления
процессом выполнения необходимых работ,
координацию их последовательности,
распределения ресурсов и компенсации
внутренних и внешних возмущений.
С точки зрения теории управления, объект должен быть наблюдаем (необходимо постоянно контролировать ход выполнения проекта) и управляем (т.е. необходимы механизмы своевременного воздействия на ход реализации проекта). Последнее особенно актуально в условиях неопределенности и изменчивости предметной области, что характерно при разработке программных продуктов.
Выделим основные отличительные признаки проекта как объекта управления:
изменчивость – целенаправленный перевод системы из существующего в некоторое желаемое состояние, выраженное в целях проекта;
ограниченность конечной цели и ограниченность продолжительности проекта во времени;
ограниченность бюджета и ресурсов;
комплексность – наличие большого числа факторов, прямо или косвенно влияющих на прогресс и результаты выполнения проекта;
новизна для структуры, заказавшей проект.
Проекты можно классифицировать по самым различным признакам. Отметим основные из них.
По составу и структуре проекта:
монопроект (отдельный проект любого типа, вида и масштаба);
мультипроект (комплексный проект, состоящий из ряда монопроектов и требующий использования многопроектного управления процессом разработки).
Тип проекта можно определять, например, по предметной области: технический, организационный, экономический, социальный, смешанный. Отметим, что разработка прикладного ПО (в том числе и информационных систем) относится к техническим проектам, которые, согласно [8], имеют следующие особенности:
главная цель проекта четко определена, но отдельные цели должны уточняться по мере достижения частных результатов;
срок завершения и продолжительность проекта определены заранее, желательно их точное соблюдение, однако они также могут корректироваться в зависимости от полученных промежуточных результатов и общего прогресса.
Масштаб проекта определяется по размерам бюджета и количеству участников: мелкие проекты, малые проекты, средние проекты и крупные проекты. Можно также рассматривать масштабы проектов в более конкретной форме – отраслевые, корпоративные, учебные, ведомственные проекты, проекты одного предприятия и т.д.
выполнение работ по разработке программного обеспечения;
выполнение подготовки к внедрению системы;
контроль и регулирование основных качественных показателей проекта.
На завершающей фазе ввода в эксплуатацию проводятся испытания, опытная эксплуатация системы в реальных условиях, ведутся переговоры о результатах выполнения проекта и о возможных новых контрактах. Основные виды работ:
комплексные испытания;
подготовка кадров для эксплуатации разработанной системы;
подготовка рабочей документации, сдача системы заказчику и ввод ее в эксплуатацию;
сопровождение, поддержка, сервисное обслуживание;
оценка результатов проекта и подготовка итоговых документов;
разрешение конфликтных ситуаций и закрытие работ по проекту;
накопление опытных данных для последующих проектов, анализ опыта и определение направлений развития.
Кроме того, необходимо отметить, что на обнаружение ошибок, допущенных на стадии системного проектирования, расходуется примерно в два раза больше времени, чем на последующих фазах, а их исправление обходится в пять раз дороже. Поэтому на начальных стадиях проекта разработку следует выполнять особенно тщательно. Наиболее часто на начальных фазах допускаются следующие ошибки [8]:
неправильная интерпретация исходной постановки задачи;
ошибки в определении интересов заказчика;
концентрация на маловажных, сторонних интересах;
неправильное или недостаточное понимание деталей;
неполнота функциональных спецификаций (системных требований);
ошибки в определении требуемых ресурсов и сроков;
редкая проверка на согласованность этапов и отсутствие контроля со стороны заказчика (нет привлечения заказчика).
Понятие жизненного цикла является одним из базовых понятий методологии проектирования. Жизненный цикл для программных продуктов является непрерывным процессом. Он начинается с момента принятия решения о создании ПО и заканчивается в момент полного изъятия программы из эксплуатации. Для информационных систем существует международный стандарт, регламентирующий их жизненный цикл – ISO/IEC 12207 (ISO – International Organization of Standardization – международная организация по стандартизации; IEC – International Electrotechnical Commission – международная комиссия по электротехнике).
Согласно данному стандарту структура жизненного цикла основывается на трех группах процессов:
основные процессы жизненного цикла (приобретение, поставка, разработка, эксплуатация, сопровождение);
вспомогательные процессы, обеспечивающие выполнение основных процессов (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, разрешение проблем);
организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого жизненного цикла, обучение).
Среди основных процессов жизненного цикла наибольшую важность имеют три: разработка, эксплуатация и сопровождение.
Разработка является одним из важнейших процессов жизненного цикла и, как правило, включает в себя стратегическое планирование, анализ, проектирование и реализацию (собственно программирование). Непосредственно процесс разработки включает в себя все работы по созданию ПО и его компонентов в соответствии с заданными требованиями, а также оформление проектной и эксплуатационной документации; подготовку материалов, необходимых для проведения тестирования разработанных программных продуктов; и – по необходимости – разработку материалов, необходимых для организации обучения пользователей.
Эксплуатационные работы можно подразделить на подготовительные и основные. К подготовительным относят конфигурирование базы данных и рабочих мест пользователей; обеспечение пользователей эксплуатационной документацией и обучение персонала. Основные эксплуатационные работы включают непосредственно эксплуатацию ПО; локализацию проблем и устранение причин их возникновения; модификацию ПО; подготовку предложений по совершенствованию системы; развитие и модернизацию системы (последние три позиции – по необходимости).
Процесс сопровождения программной продукции (службы технической поддержки) играет весьма заметную роль в жизни любого крупного программного продукта. Отметим, что наличие квалифицированного технического обслуживания на этапе эксплуатации является необходимым условием для решения поставленных задач, причем ошибки обслуживающего персонала могут приводить к явным или скрытым финансовым потерям, сопоставимым со стоимостью всей системы. Обеспечение качественного технического обслуживания требует привлечения специалистов высокой квалификации, которые в состоянии решать не только текущие задачи администрирования, но и восстанавливать работоспособность системы при сбоях.