УДК 681.32.019
Т.Я. ЧУМАКОВА, С.М. ЦЫГАНЕНКО
МЕЖДУНАРОДНЫЕ СТАНДАРТЫ И ЖИЗНЕННЫЕ ЦИКЛЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Abstract: In the paper the structure of type model of life cycle of the difficult programmatic systems is discussed. Intercommunication of some international standards in the field of information technologies and basic processes of life cycle of information systems is presented.
Key words: ISO, ISO standards, software, life cycle, life cycle model.
Анотація: У статті розглянуто структуру типової моделі життєвого циклу складних програмних систем. Приведено взаємозв’язок деяких міжнародних стандартів у сфері інформаційних технологій і основних процесів життєвого циклу інформаційних систем.
Ключові слова: ISO, стандарти ISO, програмне забезпечення, життєвий цикл, модель життєвого циклу.
Аннотация: В статье рассматривается структура типовой модели жизненного цикла сложных программных систем. Приведена взаимосвязь некоторых международных стандартов в сфере информационных технологий и основных процессов жизненного цикла информационной системы. Ключевые слова: ISO, стандарты ISO, программное обеспечение, жизненный цикл, модель жизненного цикла.
1. Введение
Отраслевые и международные стандарты в сфере информационных технологий являются суммой опыта, накопленного экспертами в инженерии программного обеспечения (ПО) на основе огромного количества проектов, проводившихся в рамках коммерческих структур США, Европы и в рамках военных контрактов. Большая часть стандартов создавалась как набор критериев для отбора поставщиков [1] программного обеспечения для Министерства обороны США, и эту задачу они решают достаточно успешно. Стандарты содержат описание выработанных на основе реальных проектов подходов к построению сложных программных систем.
Для корректного рассмотрения вопросов создания сложных программных систем необходимо, чтобы процесс разработки включал не только собственно процедуру разработки (кодирования), но и такие процедуры жизненного цикла программных систем, как подготовка к разработке (анализ предметной области, определение требований, выработка решений), проектирование, документирование, тестирование, внедрение, эксплуатация, сопровождение, управление изменениями, прекращение использования.
2. Процессы жизненного цикла программной системы
Термином жизненный цикл (ЖЦ) принято называть совокупность процессов и этапов развития организмов живой природы, технических систем, продуктов производства от моментов зарождения или появления потребности их создания и использования до прекращения функционирования или применения.
Программы для вычислительных машин обычно являются компонентами программноаппаратных комплексов или технических систем. Программы и данные в системах и вычислительных комплексах являются наиболее гибкими компонентами и подвержены изменениям в течение всего их ЖЦ. Для обеспечения нужного уровня интеграции программной и аппаратной
© Чумакова Т.Я., Цыганенко С.М., 2009
ISSN 1028-9763. Математичні машини і системи, 2009, № 3
составляющих информационной системы довольно часто различные аспекты ЖЦ программного обеспечения рассматриваются в связи с элементами жизненного цикла системы в целом.
Типовая модель процессов жизненного цикла сложной системы начинается с концепции идеи системы или потребности в ней, охватывает проектирование, разработку, применение и сопровождение системы и заканчивается снятием системы с эксплуатации. Программные средства служат для выполнения определенных функций систем на компьютерах. Модель жизненного цикла системы обычно разделяют на последовательные периоды реализации: стадии или этапы. Каждый подобный период включает основные реализуемые в нем процессы, работы и задачи.
Программные системы практически всегда уникальны и общую структуру жизненного цикла ПО определить довольно сложно, поскольку она существенно зависит от целей, для которых это ПО разрабатывается, и от решаемых им задач. Структура жизненного цикла будет разной у системы управления промышленной базой данных (СУБД) и у комплексной системы автоматизации предприятия. Тем не менее определяют основные элементы структуры жизненного цикла ПО в виде модели жизненного цикла. Структурная модель жизненного цикла ПО описывает фазы разработки, связь между ними и последовательность их выполнения. Выбор неоптимальной модели может привести к привлечению дополнительных ресурсов, возникновению непредвиденных ситуаций, срыву сроков поставок и т.д. В каждом конкретном проекте по разработке программного обеспечения на этапе планирования определяется конкретная модель жизненного цикла ПО, которая зависит от вида программного обеспечения, его назначения, условий применения и многих других факторов. На основе рекомендаций международных стандартов определяются более конкретные процессы разработки ПО. Отличаются они от стандартов, прежде всего, большей детальностью и четким описанием связей между отдельными видами деятельности, определением потоков данных в ходе жизненного цикла и другими артефактами. Модель жизненного цикла сложной программной системы обычно разделяют на следующие основные этапы с последующей адаптацией каждого из них в модели жизненного цикла конкретной системы:
• определение требований;
• анализ и проектирование;
• разработка;
• испытание системы;
• тестирование;
• производство;
• распространение и продажа;
• эксплуатация;
• сопровождение и мониторинг;
• снятие с эксплуатации (утилизация).
3. Международные стандарты и процессы жизненного цикла программной системы
Современные стандарты не предписывают четких и однозначных схем построения структуры жизненного цикла ПО. Это сделано намеренно, поскольку достаточно жесткие схемы препятствуют
использованию более прогрессивных технологий разработки, которых в последнее десятилетие появилось достаточно много и которые продолжают интенсивно наращиваться и развиваться. Международные стандарты максимально общим образом определяют некоторый набор видов деятельности, из которых должен состоять процесс разработки, и на этих видах деятельности, выделяя их элементы, вводят ту или иную структуру жизненного цикла ПО.
Существует набор стандартов, определяющих различные элементы в структуре жизненных циклов ПО. В качестве основных таких элементов выделяются технологические процессы -структурированные наборы деятельностей, решающих некоторую общую задачу или связанную совокупность задач, такие, как процесс определения требований, процесс разработки, процесс сопровождения ПО, процесс обеспечения качества, процесс разработки документации, процесс тестирования и пр. Процессы могут определять разные этапы жизненного цикла и увязывают их с различными видами деятельностей, задачами, результатами, ролями задействованных лиц. Цементирует все этапы в жизненном цикле ПО процесс управления изменениями. Ниже представлен неполный перечень стандартов, которые дают общее представление о структуре жизненного цикла ПО и его основных процессах.
Для того чтобы получить представление о возможной структуре жизненного цикла ПО, обратимся к соответствующим стандартам ISO, описывающим технологические процессы.
• ISO/IEC 12207:2008 System and software engineering - Software life cycle processes [2]. Разработка систем и программного обеспечения - Процессы жизненного цикла программного обеспечения. Стандарт определяет общую структуру жизненного цикла ПО в виде трехуровневой модели, элементами которой являются процессы, виды деятельности, задачи. Процессы объединены в четыре группы: основные процессы, поддерживающие процессы, организационные процессы, адаптация. Процессы состоят из отдельных видов деятельности. Например, процесс разработки ПО включает такие виды деятельности, как анализ системных требований, проектирование программно-аппаратной части системы в целом, анализ требований к ПО, проектирование архитектуры ПО, кодирование, тестирование и т.д. Каждый вид деятельности направлен на решение одной или нескольких задач. Например, такой вид деятельности, как развертывание процесса разработки, должен решить следующие задачи: определение структуры жизненного цикла ПО, определение модели собственно фазы разработки ПО, выбор используемых стандартов, формирование набора нормативно-методических документов, определение среды разработки, функционирование и т.д.
• ISO/IEC 15288:2008 System and software engineering - System life cycle processes [3]. Разработка систем и программного обеспечения - Процессы жизненного цикла систем. Стандарт нацелен на рассмотрение программно-аппаратной системы в целом. Предлагает похожую схему определения структуры жизненного цикла ПО в виде набора групп процессов, где каждый процесс описывается набором результатов, и каждый результат достигается при помощи набора различных видов деятельности.
Эффективность разработки ПО в целом зависит от точности и корректности формулировки требований к программному продукту. Правила работы с требованиями к ПО и более общими
системными требованиями к программно-аппаратной системе в целом определяются следующими двумя стандартами IEEE:
• IEEE 830-1998 Recommended practice for software requirements specifications [4]. Описывает структуру документов для фиксации требований к ПО, определяет характеристики, которыми должен обладать правильно составленный набор требований (корректность, однозначность, полнота, непротиворечивость, упорядоченность и т.д.).
• IEEE 1233-1998 Guide for developing system requirements specifications [5]. Описывает правила построения требований для программно-аппаратных систем в целом, определяет необходимые свойства и атрибуты набора требований. Разработка требований включает определение, организацию, представление и модификацию требований.
Одним из важнейших этапов в разработке программного обеспечения является процесс проектирования архитектуры ПО. Архитектура определяет большинство характеристик качества ПО в целом и служит основным средством общения между разработчиками, а также между разработчиками и всеми остальными лицами, заинтересованными в данном ПО. Ряд стандартов регламентируют описание архитектуры, которое, в свою очередь, является основной составляющей проектной документации на программное обеспечение.
• IEEE 1016-1998 Recommended Practice for Software Design Descriptions [6]. Стандарт делает акцент на принципах построения архитектуры, а не на наборе структур, которые лежат в ее основе.
• ISO/IEC 42010 IEEE Std 1471-2000 System and software engineering - Recommended practice for architectural description of software-intensive systems [7]. Архитектура может иметь несколько представлений, отражающих структуру ПО с разных точек зрения. Стандарт рекомендует для каждого представления фиксировать отраженные в нем взгляды и интересы, причины, обуславливающие необходимость такого рассмотрения системы, несоответствия между элементами одного представления или между различными представлениями, а также различную служебную информацию.
Понятие качественного ПО соответствует представлению о том, что программа достаточно успешно справляется со всеми возложенными на нее задачами и не приносит проблем ни конечным пользователям, ни службе поддержки, ни специалистам по продажам. На создание качественного ПО существенное влияние оказывает качество технологических процессов его разработки. Общие принципы обеспечения качества процессов производства во всех отраслях экономики регулируются набором стандартов серии ISO 9000. Наиболее важные стандарты для разработки ПО в этом наборе следующие:
• ISO 9001:2000 Quality management systems - Requirements [8]. Системы управления качеством - Требования. Этот стандарт определяет общие правила обеспечения качества результатов во всех процессах жизненного цикла изделия.
• ISO/IEC 90003:2004 Software engineering - Guidelines for the application of ISO 9001:2000 to computer software [9]. Разработка программного обеспечения - Руководящие положения по применению стандарта ISO 9001:2000 к программному обеспечению. Этот стандарт конкретизирует положения ISO 9001 для разработки программного обеспечения с упором на обеспечение качества
при процессе проектирования. Он также определяет некоторый набор техник и процедур, которые рекомендуется применять для контроля и обеспечения качества разрабатываемых программ.
• ISO/IEC TR 90005:2008 Software engineering - Guidelines for the application of ISO 9001:2000 to system life cycle processes [10]. Разработка программного обеспечения - Руководящие положения по применению стандарта ISO 9001:2000 к процессам жизненного цикла программных систем. Этот стандарт конкретизирует положения по применению ISO 9001:2000 для приобретения, поставки, разработки, применения и сопровождения программных систем. Он не добавляет и не изменяет требования ISO 9001:2000. ISO/IEC TR 90005:2008 использует ISO/IEC 15288 как отправную точку для формирования требований обеспечения качества при проектировании программных систем.
Качество программного обеспечения регламентируется группой стандартов ISO 9126. В стандартах качество ПО определено в виде всей совокупности характеристик, позволяющих удовлетворить потребности всех заинтересованных лиц. При рассмотрении качества ПО различаются понятия внутреннего качества, связанного с характеристиками самого ПО, без учета его поведения, внешнего качества, характеризующего ПО с точки зрения его поведения в системе, и качество ПО при использовании в различных сценариях работы. Кроме того, на создание качественного ПО существенное влияние оказывает качество технологических процессов его разработки, о чем упоминалось ранее.
Стандарт ISO 9126 предлагает использовать для описания качества ПО многоуровневую модель показателей качества. На верхнем уровне выделено 6 основных характеристик качества ПО. Каждая характеристика описывается при помощи набора атрибутов, позволяющих оценить эту характеристику. Для каждого атрибута определяется набор метрик, позволяющих оценить этот атрибут. Для каждой метрики определяется набор оценочных элементов, позволяющих оценить эту метрику. Построение модели качества позволяет системно описать требования к программному обеспечению, определяя, какие свойства ПО по данной характеристике хотят видеть заинтересованные стороны. Показатели качества, закрепленные в стандартах, не исчерпывают полностью понятие качества ПО. В зависимости от назначения программного обеспечения перечень показателей качества может быть расширен или сужен в рамках проекта по разработке конкретного ПО.
• ISO/IEC 9126-1:2001 Software engineering - Product quality - Part 1: Quality model [11].
Определяет набор характеристик и атрибутов качества программного обеспечения.
• ISO/IEC 9126-2:2003 Software engineering - Product quality - Part 2: External metrics [12].
• ISO/IEC 9126-3:2003 Software engineering - Product quality - Part 3: Internal metrics [13].
• ISO/IEC 9126-4:2004 Software engineering - Product quality - Part 4: Quality in use metrics
[14].
Процедура контроля качества предназначена для того, чтобы убедиться, что определенные характеристики качества ПО достигнуты. Для оценки многих атрибутов качества не существует более эффективных способов, чем тестирование. Тестирование - наиболее широко применяемый метод контроля качества. Тестировать можно соблюдение любых требований, соответствие которым выявляется во время работы ПО. Организация тестирования ПО регламентируется следующими стандартами:
• ISO/IEC 25051:2006 Software engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Requirements for quality of Commercial Off-The-Shelf (COTS) software product and instructions for testing [15]. Разработка программного обеспечения - Оценка и требования качества к программному обеспечению - Требования для качества готового коммерческого программного продукта и инструкций для испытания. Определяет требования качества к программным продуктам и к документации по тестированию. Регламентирует содержание документации по тестированию, которая должна включать план тестирования, описание используемых методов тестирования, описание наборов тестов и результатов тестирования. Этот стандарт в 2006 году пришел на смену ISO/IEC 12119:1994.
• IEEE 829-1998 Standard for Software Test Documentation [16]. Описывает базовый набор документов для тестирования программного обеспечения. Стандарт также определяет форму и содержание тестовых документов.
• IEEE 829-2008 Standard for Software and System Test Documentation [17]. Стандарт применяется к программным системам.
• IEEE 1008-1987 (R1993, R2002) Standard for Software Unit Testing [18]. Описывает организацию модульного тестирования.
Процессу оценки характеристик качества готовых программных средств и их компонентов (программных продуктов) на различных этапах жизненного цикла посвящен международный стандарт ISO 14598, состоящий из шести частей. Для каждой характеристики качества рекомендуется формировать меры и шкалу измерений с выделением требуемых, допустимых и неудовлетворительных значений. Реализация процессов оценки должна коррелировать с этапами жизненного цикла конкретного проекта программного средства в соответствии с применяемой адаптированной версией стандарта ISO 12207.
• ISO/IEC 14598-1:1999 Information technology - Software product evaluation - Part 1: General overview [19].
• ISO/IEC 14598-2:2000 Software engineering - Product evaluation - Part 2: Planning and management [20].
• ISO/IEC 14598-3:2000 Software engineering - Product evaluation - Part 3: Process for developers [21].
• ISO/IEC 14598-4:1999 Software engineering - Product evaluation - Part 4: Process for acquirers [22].
• ISO/IEC 14598-5:1998 Information technology - Software product evaluation - Part 5: Process for evaluators [23].
• ISO/IEC 14598-6:2001 Software engineering - Product evaluation - Part 6: Documentation of evaluation modules [24].
4. Выводы
В каждом конкретном проекте по разработке программного обеспечения на этапе планирования на основе рекомендаций международных стандартов определяется конкретная модель жизненного цикла ПО. Выбор неоптимальной модели жизненного цикла может привести к привлечению
дополнительных ресурсов, возникновению непредвиденных ситуаций, срыву сроков поставок и созданию неконкурентоспособного программного обеспечения низкого качества.
СПИСОК ЛИТЕРАТУРЫ
1. Чумакова Т.Я., Цыганенко С.М. Стандартизация в сфере информационных технологий // Математичні машини і системи. - 2009. - № 2. - С. 145 - 150.
2. ISO/IEC 12207:2008 System and software engineering - Software life cycle processes.
3. ISO/IEC 15288:2008 System and software engineering - System life cycle processes.
4. IEEE 830-1998 Recommended practice for software requirements specifications.
5. IEEE 1233-1998 Guide for developing system requirements specifications.
6. IEEE 1016-1998 Recommended Practice for Software Design Descriptions.
7. ISO/IEC 42010 IEEE Std 1471-2000 System and software engineering - Recommended practice for architectural description of software-intensive systems.
8. ISO 9001:2000 Quality management systems - Requirements.
9. ISO/IEC 90003:2004 Software engineering - Guidelines for the application of ISO 9001:2000 to computer software.
10. ISO/IEC TR 90005:2008 Software engineering - Guidelines for the application of ISO 9001:2000 to system life cycle processes.
11. ISO/IEC 9126-1:2001 Software engineering - Product quality - Part 1: Quality model.
12. ISO/IEC 9126-2:2003 Software engineering - Product quality - Part 2: External metrics.
13. ISO/IEC 9126-3:2003 Software engineering - Product quality - Part 3: Internal metrics.
14. ISO/IEC 9126-4:2004 Software engineering - Product quality - Part 4: Quality in use metrics.
15. ISO/IEC 25051:2006 Software engineering - Software product Quality Requirements and Evaluation (SQuaRE) -Requirements for quality of Commercial Off-The-Shelf (COTS) software product and instructions for testing.
16. IEEE 829-1998 Standard for Software Test Documentation.
17. IEEE 829-2008 Standard for Software and System Test Documentation.
18. IEEE 1008-1987 (R1993, R2002) Standard for Software Unit Testing.
19. ISO/IEC 14598-1:1999 Information technology - Software product evaluation - Part 1: General overview.
20. ISO/IEC 14598-2:2000 Software engineering - Product evaluation - Part 2: Planning and management.
21. ISO/IEC 14598-3:2000 Software engineering - Product evaluation - Part 3: Process for developers.
22. ISO/IEC 14598-4:1999 Software engineering - Product evaluation - Part 4: Process for acquirers.
23. ISO/IEC 14598-5:1998 Information technology - Software product evaluation - Part 5: Process for evaluators.
24. ISO/IEC 14598-6:2001 Software engineering - Product evaluation - Part 6: Documentation of evaluation modules.
Стаття надійшла до редакції 14.11.2008