Липаев В.В. Программная инженерия
.pdfЛекция 1. Программная инженерия в жизненном цикле программных средств
Методология обеспечения качества ПС в программной инжене рии поддержана рядом методических документов и инструментальных средств, а также формализована комплексом международных стандартов (см. Приложение 1). Внедрение комплекса требует больших усилий и зат рат, что ограничило его массовое использование для относительно про стых и средней сложности проектов. Концептуальные и организационные основы административного управления жизненным циклом и качеством ПС в системе СММ, а также СММ1:2003, определены в восьми базовых принципах, которые декларированы в стандартах ISO 9000:2000 и ISO
15504:1-9.
Принцип 1 — Ориентация предприятия-разработчика на потре бителя-заказчика. «Предприятия зависят от своих потребителей и, таким образом, должны понимать текущие и будущие потребности потребите лей-заказчиков, удовлетворять их требования и стремиться превзойти их ожидания».
Принцип 2 — Лидерство-руководство. «Лидеры обеспечивают един ство назначения и направления деятельности предприятия. Они должны создавать и поддерживать внутреннюю окружающую среду, в которой специалисты могут в полной мере участвовать в достижении стратегичес ких целей предприятия».
Принцип 3 — Вовлечение персонала. «Люди составляют сущность предприятия на всех уровнях, и их полноценное участие в деятельности способствует применению их способностей на благо целей предприятия».
Принцип 4 — Процессный подход. «Желаемый результат достигает ся более эффективно, когда требуемые ресурсы и деятельность специалис тов предприятия управляются как единый связанный процесс».
Принцип 5 — Системный подход к административному управле нию. «Выявление и понимание задач и административное управление сис темой взаимосвязанных процессов для заданной стратегической цели по вышает эффективность и результативность предприятия».
Принцип 6 — Постоянное усовершенствование. «Непрерывное усо вершенствование процессов и повышение качества продукции должно быть постоянной стратегической целью предприятия и его специалистов».
Принцип 7 — Подход к принятию решений, основанный на фак тах. «Эффективные решения должны базироваться на анализе только ре альных данных и достоверной информации».
30
1.3. Системные основы современных технологий программной инженерии
Принцип 8 — Взаимовыгодные отношения с поставщиками. «Пред приятие-пользователь и его поставщики-разработчики взаимозависимы, и взаимовыгодные отношения между ними повышают способность обоих производить качественную продукцию».
В стандарте ISO 15504 каждый из приведенных принципов проком ментирован комплексом действий, необходимых для их реализации в про ектах. Выполнение этих принципов способствует повышению управлен ческой культуры, применению системы административного управления качеством во всех видах деятельности предприятий и, как следствие, обес печению высокого качества и конкурентоспособности создаваемой про дукции, проектов и систем. Эти принципы рекомендуется применять
при:
—формулировке политики и стратегии обеспечения всего ЖЦ ПС;
—выборе целей проекта, требований и характеристик качества ПС, непосредственно связанных с потребностями и ожиданиями заказчиков и потребителей;
—управлении операциями в процессе реализации проекта и для удов летворения требований заказчика и потребителей;
—управлении людскими ресурсами предприятия для обеспечения ЖЦ ПС и его качества.
Описание процессов ЖЦ ПС в СММ сфокусировано на поэтапном определении реально достигаемых результатов и на оценивании качества их выполнения. Качество процессов зависит от технологической среды, в которой они выполняются. Зрелость процессов — это степень их управ ляемости, возможность поэтапной количественной оценки качества, конт ролируемость и эффективность результатов. Модель зрелости предприя тия представляет собой методический нормативный документ, определя ющий правила создания и функционирования системы управления жизненным циклом ПС, методы постепенного повышения культуры и ка чества производства. Рост зрелости обеспечивает потенциальную возмож ность возрастания эффективности и согласованности использования про цессов создания, сопровождения и оценивания качества компонентов и ПС в целом. Реальное использование регламентированных процессов пред полагает их документирование и поэтапный контроль характеристик каче ства ПС. На предприятиях, достигших высокого уровня зрелости, форма лизованные процессы ЖЦ ПС должны принимать статус стандарта, фик-
31
Лекция 1. Программная инженерия в жизненном цикле программных средств
сироваться в организационных структурах и определять производствен ную тактику и стратегию корпоративной культуры производства и систе мы обеспечения качества программного продукта.
В современных автоматизированных технологиях программной ин женерии, создания и совершенствования сложных ПС с позиции обеспе чения их качества можно выделить методы и средства, позволяющие:
—создавать программные модули и функциональные компоненты
высокого, гарантированного качества;
—предотвращать дефекты проектирования за счет систем обес печения качества, эффективных технологий и инструментальных средств автоматизации всего жизненного цикла комплексов программ и баз данных;
—обнаруживать и устранять различные дефекты и ошибки про ектирования, разработки и сопровождения программ путем верификации
исистематического тестирования на всех этапах жизненного цикла ПС;
—удостоверять достигнутые значения качества функциониро вания программных продуктов в процессе их испытаний и сертификации перед передачей в регулярную эксплуатацию пользователям.
Комплексное, скоординированное применение этих методов и средств в процессе создания, развития и применения ПС позволяет исключать многие виды дефектов или значительно ослаблять их влияние. Тем самым уровень достигаемого качества программных продуктов становится пред сказуемым и управляемым, непосредственно зависящим от ресурсов,
выделяемых на его достижение, а главное, от системы качества и эффек тивности технологии, используемых на всех этапах жизненного цикла ПС. Эти ресурсы требуются на технологические средства в ЖЦ ПС:
—на приобретение или создание технологии и инструментальных средств, применяемых для обеспечения требуемого качества всего жиз ненного цикла ПС;
—на эксплуатацию и непосредственное применение технологии в процессе обеспечения ЖЦ ПС;
—на создание технологии и инструментальных средств для испыта ний и оценивания характеристик качества программного средства;
—на выполнение измерений достигнутых значений характеристик качества ПС.
Улучшение технико-экономических показателей создания ПС, а также предотвращение ошибок и дефектов обеспечивается примене-
32
1.3. Системные основы современных технологий программной инженерии
нием современных технологий программной инженерии и систем автома тизированного проектирования. Они представляют собой высокопроизво дительные, ресурсосберегающие технологии создания комплексов про грамм высокого качества и надежности, имеют целью сокращение общих затрат на проектирование, реализацию, сопровождение и совершенствова ние ПС. Для этого, прежде всего, необходимо применять методы и сред ства системного анализа и проектирования, обеспечивающие конкретиза цию и максимально точное представление целей, назначения и функций с начала ЖЦ ПС и предотвращающие распространение возможных систем ных дефектов на последующие этапы разработки. Такие технологии про граммной ин^кенерии позволяют исключать или значительно снижать уровень системных, алгоритмических и программных ошибок в программ ных продуктах, передаваемых на эксплуатацию. Кроме того, они эффек тивны при модификации и сопровождении ПС, а также при изменении конфигурации внешней среды.
Для обнаружения, устранения ошибок и дефектов все этапы разра ботки и сопровождения ПС должны быть поддержаны методами и сред-
ствами верификации, а так:исе систематического, автоматизирован ного тестирования корректности реализованных решений. На этапах разработки ПС целесообразно применять различные методы, эталоны и виды тестирования, каждый из которых ориентирован на обнаружение, локализацию или диагностику определенных типов дефектов. Непредска зуемость конкретных дефектов и ошибок в программах приводит к целе сообразности последовательного, методичного анализа возможности про явления любого типа ошибок и их исключения на наиболее ранних этапах разработки при минимальных затратах. Для тестирования необходимы до статочно полные эталоны, такие как совокупность требований техничес кого задания и поэтапная их декомпозиция в спецификациях. Существен ная особенность тестирования сложных ПС состоит в потребности их проверки при ограниченной длительности испытаний. Для этого целесо образно тщательное планирование тестирования с учетом всех резуль татов, полученных на этапах жизненного цикла. При планировании основ ная задача состоит в достижении максимальной достоверности испытаний и определения качества ПС при ограничении допустимых затрат ресурсов.
При применении импортных компонентов в системном проекти ровании и обеспечении качества программных продуктов следует учи-
33
Лекция 1. Программная инженерия в жизненном цикле программных средств
тывать, что, в принципе, в них возможны как злоумышленные, так и слу чайные, непредумышленные дефекты вычислительного процесса, программ и данных, отражающиеся на качестве их функционирования. Злоумыш ленные вирусы и/или «закладки» хотя и маловероятны в серийных, широ ко тиражируемых в мире программных продуктах, однако требуются осо бые методы и средства для целенаправленного их обнаружения и устране ния. Зарубежным специалистам свойственно ошибаться, так же, как и отечественным, однако более высокое качество используемых технологий разработки и современная проектировочная культура позволяют значи тельно снижать уровень случайных дефектов в программных продуктах, поступающих на рынок. Однако в любых сложных импортных ПС все
гда не гарантировано полное, абсолютное отсутствие случайных оши бок и дефектов, которые могут быть важнейшими дестабилизирующими факторами проектов. Их применение в критических отечественных систе мах требует соответствующего дополнительного контроля качества и спе циальных работ по обеспечению надежности и безопасности при проекти ровании и эксплуатации.
Комплексирование готовых импортных ПС и компонентов при про ектировании конкретной отечественной системы создает д;су|б>вмл их фун кционирования, не всегда адекватные предусмотренным разработчика ми и проверенным при испытаниях, хотя, может быть, и не выходящие за пределы требований эксплуатационной документации. Это способствует проявлению ранее скрытых дефектов и ошибок и вызывает необходи мость их устранения. Для этого ответственные и квалифицированные по ставщики зарубежных программных продуктов имеют службы сопровож дения, регистрации и накопления претензий пользователей и быстрого реагирования для устранения реальных дефектов функционирования. Ле гальная закупка и использование лицензионно чистых программных про дуктов, обеспеченных сопровождением фирмы-поставщика, позволяет в значительной степени снижать влияние на качество функционирования ПС дефектов, не предотвращенных в процессе их создания.
Состояние экономики и промышленности страны все больше зависит от качества сложных информационных систем и их важнейшей, интел лектуальной части — программных продуктов, применяемых для управ ления в экономике, социальной сфере, системах вооружения и других областях. В связи с этим стратегической задачей стало обеспечение
34
1.3. Системные основы современных технологий программной инженерии
высокого качества отечественных программных продуктов при их массо вой разработке и поставке для различных сфер применения в стране и на мировом рынке. Для конкурентоспособности в мире сложных программ ных продуктов и возможности их успешного экспорта они должны быть сертифицированы и соответствовать требованиям международных стан дартов.
Для удостоверения качества, наделсности и безопасности приме нения сложных, критических систем используемые в них программные продукты следует подвергать сертификации аттестованными, проблем но-ориентированными испытательными центрами (см. лекцию 18). Такие испытания необходимо проводить, когда программы управляют сложны ми процессами или обрабатывают столь важную информацию, что дефек ты в них или недостаточное качество могут нанести значительный ущерб. Сертификационные испытания должны устанавливать соответствие комп лексов программ документации и допускать их к эксплуатации в пределах изменения параметров внешней среды, исследованных при проведенных проверках. Эти виды испытаний характеризуются наибольшей строгостью и глубиной проверок и должны проводиться специалистами, независимы ми от разработчиков и от заказчиков (пользователей).
Основой сертификации должны быть детальные и эффективные Про граммы и методики испытаний комплексов программ на соответствие тре бованиям заказчиков, специально разработанные тестовые задачи и гене раторы для их формирования, а также высокая квалификация и авторитет испытателей. Применение на предприятиях-разработчиках программных продуктов, сертифицированных систем качества и профилей междуна родных стандартов на базе требований ISO 9001:2000 и/или СММ1:2003 гарантирует высокое, устойчивое управление качеством процессов и про дуктов их жизненного цикла, а также позволяет во многих случаях облег чать сертификацию конечного программного продукта. Поэтому заказчи ки сложных программных проектов должны выбирать подрядчиков-ис
полнителей, имеющих сертификаты, удостоверяющие применение ими систем гарантирования качества на основе адаптированных профилей международных стандартов.
Пробелы в обучении методам программной инлсенерии оставляют широкое поле для произвола специалистов при оценивании качества их труда, а также для появления многочисленных дефектов и ошибок в про-
35
Лекция 1. Программная инженерия в жизненном цикле программных средств
ектах ПС. Возрастание сложности и ответственности современных задач, решаемых программами, а также возможного ущерба от недостаточного качества их результатов значительно повысило актуальность освоения ме тодов полного, стандартизированного описания требований к характерис тикам качества и способов измерения их реальных значений на различных этапах ЖЦ ПС. Резко возросла необходимость знаний специалистами по нятий, определений и способов оценивания характеристик качества про граммных продуктов.
Многие отечественные специалисты в области программных средств привыкли видеть в стандартах рутину, сковывающую их «творчество». Быстрое усложнение и рост размеров комплексов программ приводит к созданию крупных программистских коллективов с профессиональным разделением труда, в которых необходимо регламентирование координи рованной деятельности групп специалистов над единым проектом. Обе щания разработчиков в контрактах с заказчиками создать высококаче ственные программы в согласованные сроки во многих случаях не выпол няются как вследствие различий в понимании ими требуемого качества, так и вследствие неумения оценить ресурсы, необходимых для достиже ния высокого качества программ. В результате качество программной про дукции зачастую остается низким, не поддающимся достоверной оценке и неконкурентоспособным на международном рынке. Поэтому важнейшей проблемой развития и применения современных систем является обуче
ние и воспитание специалистов в области программной инженерии,
использованию международных стандартов, способствующих высокому качеству ПС и достоверному его оцениванию. Необходимо их обучение умению формализовать требования и достигать конкретных значений ха рактеристик качества функционирования и применения сложных комп лексов программ с учетом тех ресурсов, которые нужны и доступны для обеспечения и совершенствования этого качества.
Л Е К Ц И Я 2
ПРОФИЛИ СТАНДАРТОВ ЖИЗНЕННОГО ЦИКЛА СИСТЕМ
ИПРОГРАММНЫХ СРЕДСТВ
ВПРОГРАММНОЙ ИНЖЕНЕРИИ
2.1.Назначение профилей стандартов жизненного цикла
впрограммной инженерии
При создании и сопровождении сложных, распределенных, тиражи руемых ПС требуется гибкое формирование и применение гармонизиро ванных совокупностей базовых стандартов и нормативных документов разного уровня, выделение в них требований и рекомендаций, необходи мых для эффективной реализации конкретных функций систем. Для уни фикации и регламентирования реализации этих функций совокупности базовых стандартов должны адаптироваться и конкретизироваться в про граммной инженерии применительно к определенным классам проектов, их функций, процессов и компонентов. В связи с этим выделилось и сфор мировалось понятие «профиля стандартов», как основного инструмента функциональной стандартизации.
Профиль стандартов — это совокупность нескольких (или подмно жество одного) базовых стандартов (и других нормативных документов) с четко определенными и гармонизированными подмножествами обязатель ных и факультативных возможностей, предназначенная для реализации заданной функции или группы функций. Функциональная характеристика (заданный набор функций) объекта стандартизации является исходной для формирования и применения профиля этого объекта или процесса. В про филе выделяются и устанавливаются допустимые факультативные воз-
37
Лекция 2. Профили стандартов жизненного цикла систем в программной инженерии
можности и значения параметров каждого базового стандарта и/или нор мативного документа, входящего в профиль. Профиль не может противо речить использованным в нем базовым стандартам и нормативным доку ментам. Он должен использовать факультативные возможности и значе ния параметров в пределах допустимых, выбранные из альтернативных вариантов. На базе одной и той же совокупности базовых стандартов могут формироваться и утверждаться различные профили для разных про ектов и сфер применения. Эти ограничения базовых документов профиля и их гармонизация, проведенная разработчиками профиля, должны обес печивать качество, совместимость и корректное взаимодействие компо нентов системы, соответствующих профилю, в заданной области его при менения.
Основными целями применения профилей стандартов при созда нии и применении ПС являются:
—снижение трудоемкости, длительности, стоимости и улучшение других технико-экономических показателей проектов систем и комплек сов программ;
—повышение качества разрабатываемых или применяемых покуп ных компонентов и ПС в целом при их разработке, приобретении, эксплу атации и сопровождении;
—обеспечение расширяемости ПС по набору прикладных функций и масштабируемости в зависимости от размерности решаемых задач;
—поддержка функциональной интеграции в системах задач, ранее решавшихся раздельно;
—обеспечение переносимости программ и данных между разными аппаратно-программными платформами.
Состояние и развитие стандартизации в области программной инже нерии характеризуется следующими особенностями, которые необходи мо учитывать при формировании и применении профилей:
—несколько сотен разработанных международных и национальных стандартов не полностью и неравномерно покрывают потребности в стан дартизации объектов и процессов создания и применения сложных сис тем, программных средств и их компонентов;
—большая длительность разработки, согласования и утверждения международных и национальных стандартов (3—5 лет) приводит к их консерватизму, а также к хроническому отставанию требований и реко-
38
2.1. Назначение профилей стандартов жизненного цикла в программной инженерии
мендаций этих документов от современного состояния техники и от теку щих потребностей практики и технологии создания сложных систем;
—стандарты современных ПС должны: учитывать необходимость их построения как открытых систем; обеспечивать расширяемость при нара щивании или изменении выполняемых функций; переносимость программ ных средств и данных систем между разными аппаратно-программными платформами; возможность взаимодействия с другими информационны ми системами той же проблемно-ориентированной сферы;
—наиболее сложные и творческие процессы создания и развития крупных распределенных ПС (системный анализ и проектирование, ин теграция компонентов и систем, испытания и сертификация) почти не поддержаны требованиями и рекомендациями стандартов вследствие труд ности их формализации, унификации и разнообразия содержания;
—чем сложнее объекты или процессы, подлежащие стандартизации, тем больше необходимо использовать и формулировать предварительные условия, учитываемые в требованиях и рекомендациях стандарта, которые следует адаптировать и конкретизировать для корректного их применения
вопределенном проекте;
—пробелы и задержки в подготовке и издании стандартов высокого ранга и текущая потребность унификации и регламентирования современ ных объектов и процессов в области программной инженерии приводят к созданию и практическому применению многочисленных нормативных и методических документов отраслевого, ведомственного или фирменного уровня.
При практическом формировании и применении профилей ПС в ряде случаев возможно использовать национальные стандарты, стандарты дефакто и ведомственные нормативные документы. Это может быть обус ловлено отставанием в разработке некоторых задач в международных стан дартах или необходимостью учета конкретных особенностей систем. При применении стандартов и профилей могут быть выявлены пробелы в по ложениях некоторых стандартов и необходимость модификации или до полнения требований, определенных в них. Некоторые функции, не фор мализованные стандартами, но важные для унификации построения или взаимодействия компонентов, могут определяться нормативными доку ментами ведомства или предприятия, обязательными для конкретного про филя и проекта.
39