Лекция 1.. Основные понятия и официальная классификация процессов программной инженерии
Скачать 30.24 Kb.
|
ОСНОВНЫЕ ПОНЯТИЯ И ОФИЦИАЛЬНАЯ КЛАССИФИКАЦИЯ ПРОЦЕССОВ ПРОГРАММНОЙ ИНЖЕНЕРИИ ВВЕДЕНИЕ В настоящее время во все сферы деятельности человека широко внедряются информационные технологии. Это приводит к разработке огромного количества программных средств (ПС) различного функционального назначения. При этом объем и сложность используемых ПС постоянно возрастают. В этой связи многие подходы к разработке ПС, применяемые на начальных этапах развития вычислительной техники, теряют свои позиции, поскольку не позволяют в полной мере получить ПС необходимого уровня качества за заданный промежуток времени при ограниченных финансовых, людских и технических ресурсах. Статистические данные о разработке программных продуктов иллюстрируют тот факт, что существующие в этой области проблемы зачастую приводят к неудовлетворительным результатам выполнения проектов. Известно, что 30 – 40% проектов по разработке ПС не доходят до завершения. Около 70% всех проектов реализуют поставленные задачи не полностью. Средний проект завершается с опозданием на 220%. В 10% проектов результат не соответствует требованиям. В 12% заказчик недостаточно привлекался к работе, чтобы обеспечить требуемые характеристики продукта. В 22% проектов не все вносимые изменения принимались во внимание. Поэтому в последние десятилетия во всем мире ведущими специалистами в области теории и практики программного обеспечения (ПО) активно выполняются работы по усовершенствованию подходов к разработке ПС. ОСНОВНЫЕ ПОНЯТИЯ ПРОГРАММНОЙ ИНЖЕНЕРИИ Термин программная инженерия или инженерия программного обеспечения (software engineering) впевые был использован в 1968 году в качестве темы для конференции, посвященной вопросам максимальной загрузки самых мощных (по тем временам) компьютеров. Тогда этот термин был определент так: Программная инженерия – система инженерных принципов для создания экономичного ПО, которое надежно и эффективно работает на реальных компьютерах. Это определение заложило основы научно-практической дисциплины, целями которой стало создание системы инженерных принципов, применяемых к разработке ПО, обеспечивающих экономичность и надежность строительства, а также эффективную работоспособность конечного продукта на различных реальных машинах. Через четверть века, международный терминологический стандарт ISO/IEC 2382/1-93, дал более развернутую формулировку определения: Программная инженерия – систематическое применение научных и технологических знаний, методов и практического опыта к проктированию, реализации, тестированию и документированию программного обеспечения в целях оптимизации его производства, поддержки и качества. Буквальный перевод термина software engineering звучит не совсем понятно, поэтому долгое время в русскоязычном переводе использовался термин технология разработки программного обеспечения. Программная инженерия – сравнительно молодая дисциплина, ее возраст чуть больше сорока лет. В 70-80 годы в ней доминировал классический, процедурный подход, в 1990-2000 годы - бъектно-ориентированный подход к разработке ПО. Терминология, используемая в области программной инженерии, достаточно хорошо нам известна, вспомним значения некоторых терминов. Программа (program, routine) - упорядоченная последовательность команд (инструкций) компьютера для решения задачи. Программное обеспечение (sowtware) - совокупность программ обработки данных и необходимых для их эксплуатации документов. В свою очередь, программное обеспечение является очень широким понятием, которое охватывает: системное программное обеспечение работоспособности компьютеров; прикладное программное обеспечение для решения задач любой предметной области в виде пакетов прикладных программ; инструментарий технологии программирования (программное обеспечение сферы производства программ). Следует различать понятия программа и программное обеспечение, которое включает в себя не только программы, но и всю сопутствующую документацию, а также конфигурационные данные, необходимые для правильной работы программы. Программы предназначены для машинной реализации задач. Термины задачи и приложения имеют очень широкое употребление в контексте информатики и программного обеспечения. Задача (problem, task) - проблема, подлежащая решению. Приложение (application) - программная реализация на компьютере решения задачи. Приложение, являясь синонимом слова "программа", считается более удачным термином и широко используется в информатике. Термин задача употребляется также в сфере программирования, особенно в режиме мультипрограммирования и мультипроцессорной обработки, как единица работы вычислительной системы, требующая выделения вычислительных ресурсов (процессорного времени, основной памяти и т.п.). В дальнейшем этот термин будет употребляться в смысле первого определения. Предметная (прикладная) область (application domain) - совокупность связанных между собой функций, задач управления, с помощью которых достигается выполнение поставленных целей. Программирование (programming) - теоретическая и практическая деятельность, связанная с созданием программ. Программирование является собирательным понятием и может рассматриваться и как наука, и как искусство, на этом основан научно-практический подход к разработке программ. Программа - результат интеллектуального труда, для которого характерно творчество, а оно, как известно, не имеет четких границ. В любой программе присутствует индивидуальность ее разработчика, программа отражает определенную степень искусства программиста. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам. Программирование базируется на комплексе научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ (специализированного инструментария создания программ). При разработке программ используются ресурсоемкие и наукоемкие технологии, высококвалифицированный интеллектуальный труд. Программирование- это развитая отрасль хозяйственной деятельности, связанная со значительными затратами материальных, трудовых и финансовых ресурсов. Программный проект – это временное предприятие, предназначенное для создания уникальных продуктов, услуг или результатов. Временный характер проекта подчеркивает, что у любого проекта есть определенное начало и завершение. Характеристика «временный» не относится к создаваемому в ходе проекта продукту, услуге или результату. Большинство проектов предпринимается для достижения устойчивого, длительного результата – время жизни конечного программного продукта существенно превышает время жизни программного проекта. В состав проекта входят как люди (разработчики), так и необходимые материальные ресурсы. ОФИЦИАЛЬНАЯ КЛАССИФИКАЦИЯ ПРОЦЕССОВ ПРОГРАММНОЙ ИНЖЕНЕРИИ Классификацию процессов программной инженерии задают международный стандарт ISO/IEC 12207-95 “Information Technology – Software Life Cycle Processes” и его российский аналог ГОСТ Р ИСО/МЭК 12207-99. В этих стандартах процессы привязаны к основному понятию программной инженерии – жизненному циклу программного обеспечения. Жизненный цикл программного обеспечения - это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации. Работы, которые могут выполняться в ЖЦ ПО, распределены по пяти основным, восьми вспомогательным и четырем организационным процессам. Основные процессы ЖЦ. Основные процессы ЖЦ реализуются под управлением основных сторон. Под основной стороной понимают одну их тех организаций, которые инициируют или выполняют разработку, эксплуатацию или сопровождение программных продуктов. Основными сторонами являются заказчик, поставщик, разработчик, оператор и персонал сопровождения программных продуктов. Основными процессами считают: Процесс заказа (acquisition process). Определяет работы заказчика, т.е. организации, которая приобретает ПО. Процесс поставки (supply process). Определяет работы поставщика, то есть организации, которая поставляет ПО заказчику. Процесс разработки (development process). Определяет работы разработчика, то есть организации, которая создает программный продукт. Процесс эксплуатации (operation process). Определяет работы оператора, то есть организации, эксплуатирующей вычислительную систему. Процесс сопровождения (maintenance process). Определяет работы сопровождающей организации, которая предоставляет услуги по сопровождению программного продукта, состоящие в контролируемом изменении программного продукта с целью сохранения его исходного состояния и функциональных возможностей. Данный процесс охватывает перенос ПО в другую операционную среду и снятие ПО с эксплуатации. Вспомогательные процессы жизненного цикла. Вспомогательный процесс считается целенаправленной составной частью другого процесса, обеспечивающей успешную реализацию и качество выполнения программного проекта. Вспомогательными процессами являются: Процесс документирования (documentation process). Определяет работы по описанию информации, формируемой в процессе ЖЦ. Процесс управления конфигурацией (confirmation management process). Определяет работы по управлению конфигурацией, что позволяет организовать, систематически учитывать и контролировать внесение изменений в ПО на всех стадиях ЖЦ. Процесс обеспечения качества (quality assurance process). Определяет работы по объективному обеспечению того, чтобы программный продукт соответствовал установленным требованиям и создавался в рамках утвержденных планов. Процесс верификации (verification process). Определяет работы (заказчика, поставщика или независимой стороны) по верификации (проверке реализации конкретных требований) программных продуктов по мере реализации программного проекта. Процесс аттестации (validation process). Определяет работы (заказчика, поставщика или независимой стороны) по аттестации (проверке полноты реализации всех требований) программных продуктов программного проекта. Процесс совместной проверки (joint review process). Определяет работы по оценке состояния и результатов какой-либо работы. Данный процесс может использоваться двумя любыми сторонами, когда одна из сторон (проверяющая) проверяет другую сторону (проверяемую) на совместном совещании. Процесс аудита (audit process). Определяет работы по выявлению соответствия требованиям, планам и договору. Данный процесс может использоваться двумя сторонами, когда одна из сторон (проверяющая) контролирует программные продукты или работы другой стороны (проверяемой). Аудит иначе называют ревизией, проводимой независимым лицом для выявления реального положения дел. Процесс решения проблемы (problem resolution process). Определяет процесс анализа и устранения проблем (включая несоответствия), независимо от их характера и источника, которые были обнаружены во время осуществления разработки, эксплуатации, сопровождения или других процессов. Организационные процессы жизненного цикла. Организационные процессы ЖЦ применяются для объединения взаимосвязанных процессов и персонала, а также постоянного совершенствования результатов объединения. Организационными процессами являются: Процесс управления (management process). Определяет основные работы по управлению, включая управление проектом при реализации процессов ЖЦ. Процесс создания инфраструктуры (infrastructure process). Определяет работы по выбору и поддержке средств и действий, обеспечивающих жизненный цикл. Процесс усовершенствования (improvement process). Определяет основные работы, которые организация (заказчика, поставщика, разработчика, оператора, персонала сопровождения или администратора другого процесса) выполняет при создании, оценке, контроле и усовершенствовании выбранных процессов ЖЦ. Процесс обучения (training process). Определяет работы по соответствующему обучению персонала. |