Методологические основы


Основная цель курса лекций —



Download 2,39 Mb.
bet3/293
Sana26.06.2022
Hajmi2,39 Mb.
#705514
TuriУчебник
1   2   3   4   5   6   7   8   9   ...   293
Bog'liq
Липаев В В Программная инженерия Методологические основы 2006

Основная цель курса лекций — представить студентам, аспирантам и менеджерам проектов современный комплекс задач, методов и стандартов программной инженерии — создания и развития сложных, многоверси­онных, тиражируемых программных средств (ПС) и баз данных (БД) тре­буемого высокого качества. Изложение ориентировано на коллективную, групповую работу специалистов над крупными программными проекта­ми. Внимание акцентировано на комплексе методов и процессов, кото­рые способны непосредственно обеспечить эффективный жизненный цикл сложных высококачественных программных продуктов и баз дан­ных. При этом предполагается, что процессы и технология создания комп­лексов программ и документов опираются на совокупность современных, автоматизированных методов и инструментальных средств поддержки дли­тельного жизненного цикла программных продуктов. Однако не всегда это может быть рентабельно вследствие высокой стоимости таких средств. В результате может снижаться качество программных продуктов и повы­шаться их стоимость.
Быстрый рост областей применения, сложности функций и масшта­бов комплексов программ привел к принципиальному изменению методов в этой сфере и к переходу от технологии индивидуального программиро­вания отдельных небольших программок к коллективному созданию круп­ных комплексов программ инженерными методами проектирования и разра­ботки. Накопление в мире знаний, опыта разработки и применения огром­ного количества различных сложных программ для ЭВМ способствовало систематизации и обобщению методов и технологий их разработки, сокра­щению дефектов и неопределенностей в характеристиках и качестве по­ставляемых и применяемых программных продуктов. В результате сфор­мировалась современная методология и инженерная дисциплина обеспе­чения процессов жизненного цикла сложных программных продуктов — программная инженерия для различных областей применения.
Программная инженерия — это область компьютерной науки и тех­нологии, которая занимается построением программных систем, настоль­ко больших и сложных, что для этого требуется участие слаженных ко­манд разработчиков различных специальностей и квалификаций. Обычно такие системы существуют и применяются долгие годы, развиваясь от версии к версии, претерпевая на своем жизненном пути множество измене­ний, улучшение существующих функций, добавление новых или удаление устаревших возможностей, адаптацию для работы в новой среде, устране­ние дефектов и ошибок. Суть методологии программной инженерии состоит в применении систематизированного, научного и предсказуемого процесса проектирования, разработки и сопровождения программных средств.
Массовое создание сложных программных средств промышленными методами и большими коллективами специалистов вызвало необходимость их четкой организации, планирования работ по требуемым ресурсам, эта­пам и срокам реализации. Совокупные затраты в мире на такие разработки составляют миллиарды, а для отдельных проектов — миллионы долларов в год, поэтому требуется тщательный анализ экономической эффективно­сти создания и использования конкретных ПС. Для решения этих задач в программной инженерии формируется новая область знания и научная дисциплина — экономика жизненного цикла программных средств, как часть экономики промышленности и вычислительной техники в общей экономике государств и предприятий. Объективно положение осложнено трудностью измерения экономических характеристик таких объектов. Ши­рокий спектр количественных и качественных показателей, которые с раз­личных сторон характеризуют содержание этих объектов, и невысокая достоверность оценки их значений определяют значительную дисперсию при попытках описать и измерить экономические свойства создаваемых или используемых крупных ПС.
Вследствие роста сфер применения и ответственности функций, вы­полняемых программами, резко возросла необходимость гарантирования высокого качества программных продуктов, регламентирования и кор­ректного формирования требований к характеристикам реальных комп­лексов программ и их достоверного определения. В результате специалис­ты в области теории и методов, определяющих качество продукции, вы­нуждены осваивать область развития и применения нового, специфичес­кого продукта — программных средств и систем в целом и их качество при использовании. Сложность анализируемых объектов — комплексов программ и психологическая самоуверенность ряда программистов в соб­ственной «непогрешимости» часто приводят к тому, что реальные харак­теристики качества функционирования программных продуктов остаются неизвестными не только для заказчиков и пользователей, но также для самих разработчиков. Отсутствие четкого декларирования в документах понятий и требуемых значений характеристик качества ПС вызывает кон­фликты между заказчиками-пользователями и разработчиками-поставщи­ками из-за разной трактовки одних и тех же характеристик.
Методы программной инженерии поддерживают и конкретизируют технологический процесс, а также отслеживание значений качества ком­понентов на этапах жизненного цикла ПС. Для каждого проекта, выполня­ющего ответственные функции, должны разрабатываться и применяться система качества, специальные планы и Программа, методология и ин­струментальные средства разработки и испытаний, обеспечивающие тре­буемые качество, надежность и безопасность функционирования про­граммных продуктов. Эти методы и процессы позволяют разработчикам и заказчикам программных продуктов более корректно взаимодействовать при определении и реализации требований контрактов и технических за­даний.
Основные концепции программной инженерии сконцентрировались и формализовались в целостном комплексе систематизированных меж­дународных стандартов, охватывающих и регламентирующих практи­чески все процессы жизненного цикла сложных программных средств. Несколько десятков стандартов этого комплекса допускают целеустрем­ленный отбор необходимых процессов, в зависимости от характеристик и особенностей конкретного проекта, а также формирование на их базе про­блемно-ориентированных профилей стандартов для определенных ти­пов проектов и/или предприятий.
Практическое применение профилей стандартов, сосредоточивших мировой опыт создания различных типов крупных комплексов программ, способствует значительному повышению производительности труда спе­циалистов и качества создаваемых программных продуктов. Эти стан­дарты определяют модификацию, мобильность и возможность повторного применения программных компонентов и комплексов, их расширяемость и переносимость на различные аппаратные и операционные платформы, что непосредственно отражается на росте экономической эффективности технологий и процессов создания различных программных средств и сис­тем. Для регламентирования процессов жизненного цикла такие профили стандартов должны адаптироваться и конкретизироваться применитель­но к определенным классам и функциям проектов, процессов и компонен­тов программных средств. При этом должны сохраняться концептуальная целостность применяемой совокупности стандартов и их эффективное, положительное влияние на процессы и результаты, на качество, надеж­ность и безопасность программных продуктов при реальных ограничени­ях на использование доступных ресурсов проектов.
В жизненном цикле комплексов программ сложно сочетаются со­держание, этапы и распределение работ, возможен ряд возвратов на более ранние технологические этапы в процессе создания компонентов ПС, они имеют не совсем определенные границы начала и завершения. Специалисты в коллективе могут на некотором интервале времени решать несколько производственных задач и заменять друг друга. Положение усугубляется трудностью поэтапного определения качества компонентов и его прогно­зирования в процессе разработки, что непосредственно отражается на про­екте в целом. Методология программной инженерии и стандарты регла­ментируют современные процессы управления проектами сложных си­стем и программных средств. Они обеспечивают организацию, освоение и применение апробированных, высококачественных процессов проектиро­вания, программирования, верификации, тестирования и сопровождения программных средств и их компонентов. Тем самым эти проекты и про­цессы позволяют получать стабильные, предсказуемые результаты и про­граммные продукты требуемого качества.
Многообразие классов и видов сложных комплексов программ, обус­ловленное различными функциями и сферами применения систем, опре­деляет формальные трудности, связанные с методами и процедурами доказательства соответствия создаваемых и поставляемых программ­ных продуктов условиям контрактов, требованиям заказчиков и потреби­телей. По мере расширения применения и увеличения сложности систем выделились области, в которых дефекты, недостаточное качество комп­лексов программ или данных могут наносить катастрофический ущерб, значительно превышающий положительный эффект от их использования. В таких критических системах (например, управления атомными элект­ростанциями, крупными банками или системами вооружения) недопусти­мы проявления катастрофических рисков функционирования программ­ных продуктов при любых искажениях исходных данных, сбоях, частич­ных отказах аппаратуры, ошибках пользователей и других нештатных ситуациях. Подобные риски комплексов программ могут определять безо­пасность функционирования объектов, предприятий и даже страны. Вслед­ствие этого резко повысилась ответственность специалистов за каче­ство результатов их труда и создаваемых программных продуктов. Это требует непрерывного совершенствования, обучения и повышения квали­фикации заказчиков, разработчиков и пользователей в области программ­ной инженерии, освоения ими современных методов, процессов и между­народных стандартов, а также высокой корпоративной культуры кол­лективов специалистов, обеспечивающих жизненный цикл критических программных продуктов.
В курсе лекций предполагается, что проектирование, разработка, сопровождение и документирование программных продуктов ведется пре­имущественно с использованием регламентированных процессов на осно­ве профилей стандартов ISO в соответствии с формализованными требо­ваниями, определенными заказчиком. Тем самым не отражено создание и применение открытого кода в программных продуктах, при котором невозможна их сертификация на соответствие международным стандар­там, вследствие неоднозначности версий ПС, изменяемых несинхронно различными пользователями и различными предприятиями.
Значительное внимание в курсе методологии программной инжене­рии уделено фрагментам и компонентам профилей стандартов ISO, целесо­образным для обеспечения высокого качества и безопасности применения программных продуктов в их жизненном цикле. Менеджмент рассматри­ваемых проектов ориентирован преимущественно на базовые стандарты серии ISO 9000:2000. Стандарты де-факто менеджмента СММ / CMMI изложены как возможная альтернатива стандартам ISO при управлении проектированием ПС, однако они не покрывают все процессы жизненного цикла сложных комплексов программ. Наиболее распространенная серти­фикация предприятий, производящих программные продукты, на соответ­ствие стандартам СММ / CMMI существенно проще, чем сертификация на соответствие полному профилю стандартов всего жизненного цикла ISO. При применении моделей СММ / CMMI учитывается преимуще­ственно качество менеджмента проектов, однако не стандартизируются и не контролируются некоторые важные компоненты процессов ЖЦ: регла­ментированные характеристики качества ПС; интерфейсы Открытых сис­тем; функциональная и информационная безопасность; комплекс техноло­гической и эксплуатационной документации. Это может быть оправдано для предприятий, создающих программные продукты средней или относи­тельно невысокой сложности, и вряд ли допустимо для разработчиков крупных, особо сложных, критических ПС. Акцент методологии программ­ной инженерии на крупные проекты предполагает сохранение и возмож­ность применения ее базовых методов, процессов и стандартов при обес­печении жизненного цикла относительно небольших проектов. Для этого должна быть предусмотрена и использоваться адаптация стандартов, тех­нологий и инструментария для различных по сложности и размеру про­ектов.
В публикациях в области программной инженерии широко распрост­ранено изобретение многочисленных аббревиатур на основе английских, иногда полужаргонных, слов, которые выдаются за принципиальные дос­тижения авторами публикаций. В тексте лекций для облегчения восприя­тия учащимися избегается применение аббревиатур, за исключением не­большого их числа, на основе часто используемых словосочетаний рус­ских слов. В официальных документах в имени стандартов ISO часто присутствуют через слеш имя IEC (Международная электротехническая комиссия). Для сокращения и упрощения текста лекций имя IEC всюду опускается, однако его следует учитывать при использовании и формиро­вании официальных документов.
Предлагаемый курс основ методологии программной инженерии предназначен для заказчиков, менеджеров крупных проектов, для анали­тиков и ведущих специалистов, обеспечивающих все этапы жизненного
цикла крупных программных средств и систем. Лекции рекомендуется использовать при обучении по специальности «бизнес-информатика», студентов старших курсов, аспирантов и менеджеров проектов, созданию сложных комплексов программ на всем их жизненном цикле. Курс поле­зен исполнителям научных проектов и опытно-конструкторских работ, к которым предъявляются высокие требования к качеству функционирова­ния и ограничены доступные ресурсы разработки программных продук­тов. Материалы лекций могут служить базой при подготовке и внедрении систем качества предприятий, создающих сложные конкурентоспособные программные продукты, для их сертификации на соответствие междуна­родным стандартам.
Считаю необходимым выразить особую благодарность профессору, заведующему кафедрой Программной инженерии ГУ ВШЭ Сергею Ми­хайловичу Авдошину за весьма полезные замечания к рукописи книги, а также за активную поддержку и организацию издания учебного пособия.
ЛЕКЦИЯ 1
ПРОГРАММНАЯ ИНЖЕНЕРИЯ
В ЖИЗНЕННОМ ЦИКЛЕ ПРОГРАММНЫХ
СРЕДСТВ


  1. Основы жизненного цикла программных средств

Термином жизненный цикл (ЖЦ) принято отражать совокупность процессов и этапов развития организмов живой природы, технических систем, продуктов производства от моментов зарождения или появления потребности их создания и использования до прекращения функциониро­вания или применения. Это соответствует всеобщему закону развития лю­бых изделий, событий или процессов между их началом и концом, кото­рые определяют цикл их создания, существования и применения. Про­граммы для вычислительных машин обычно являются компонентами жизненного цикла технических систем, но по своей природе значительно отличаются от аппаратурных, технических изделий, поэтому их жизнен­ный цикл имеет характерные особенности по сравнению с другими техни­ческими объектами. Программы и данные в системах и вычислительных машинах являются наиболее гибкими компонентами программной ин­женерии и подвержены изменениям в течение всего их ЖЦ.

Download 2,39 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   293




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish