Стандарты ПИ

Содержание

Слайд 2

План лекции 1. Стандарты программной инженерии – гарантия качества ПО 2.

План лекции
1. Стандарты программной инженерии – гарантия качества ПО
2. Стандарты, регламентирующие

процессы жизненного цикла ПО
3. Образовательные стандарты в области программной инженерии
4. Профессиональные стандарты программной инженерии
5. Типовая ролевая модель команды программного проекта
6. Контрольные вопросы и задания
Слайд 3

1. Стандарты программной инженерии – гарантия качества ПО Заключая контракт на

1. Стандарты программной инженерии – гарантия качества ПО

Заключая контракт на разработку

и поставку заказного ПО потребитель должен быть уверен в том, что разработчик справится с задачей в согласованные сроки и выполнит проект в строгом соответствии с установленными требованиями.
Приобретая коробочный программный продукт, покупатель также должен быть уверен в его высоком качестве и соответствии продукта характеристикам, заявленным его производителем и поставщиком.
Что же является гарантией качества
программных продуктов?
В мировой практике промышленного производства гарантией качества являются стандарты на производство товаров и услуг и сертификация их производителей на соответствие этим стандартам.
Процесс стандартизации производства и сертификации производителей давно вошел и в программную инженерию, где он составляет основу промышленного производства программных продуктов.
Слайд 4

Стандарты программной инженерии – гарантия качества ПО Среди всего многообразия стандартов

Стандарты программной инженерии – гарантия качества ПО

Среди всего многообразия стандартов принято

выделять
следующие основные их типы :
Корпоративные стандарты - разрабатываются крупными фирмами (корпорациями) с целью повышения качества своей продукции. Такие стандарты разрабатываются на основе собственного опыта и с учетом требований мировых стандартов. Корпоративные стандарты не сертифицируются, но являются обязательными для применения внутри корпорации. В условиях рыночной конкуренции могут иметь закрытый характер.
Отраслевые стандарты (ОСТы) – действуют в пределах организаций некоторой отрасли (например, СНИП – строительные нормы и правила). Разрабатываются с учетом требований мирового опыта и специфики отрасли. Являются, как правило, обязательными для отрасли.
Государственные стандарты (ГОСТы) принимаются государственными органами, в некоторых случаях имеют силу закона. Разрабатываются с учетом мирового опыта или на основе отраслевых стандартов. Могут иметь как рекомендательный, так и обязательный характер (стандарты безопасности). Для сертификации создаются государственные или негосударственные лицензированные органы сертификации.
Международные стандарты. Разрабатываются, как правило, специальными международными организациями на основе мирового опыта и лучших корпоративных стандартов. Имеют сугубо рекомендательный характер. Право сертификации получают организации (государственные и частные), прошедшие лицензирование в международных организациях.
Слайд 5

Стандарты программной инженерии – гарантия качества ПО Организации - разработчики международных

Стандарты программной инженерии – гарантия качества ПО

Организации - разработчики
международных стандартов

программной инженерии
ISO - International Organization for Standardization – Международная организация по стандартизации. Наиболее представительная и влиятельная организация, разрабатывающая стандарты почти во всех областях деятельности, в том числе и в IT.
ACM - Association for Computing Machinery – Ассоциация по вычислительной технике. Всемирная научная и образовательная организация в области вычислительной технике. Известна также и разработкой образовательных стандартов.
SEI - Software Engineering Institute - Институт Программной Инженерии. Исследования в области программной инженерии с упором на разработку методов оценки и повышения качества ПО. Стандарты по качеству ПО и зрелости организаций, разрабатывающих ПО.
PMI - Project Management Institute - Международный Институт Проектного Менеджмента (Управления Проектами). Некоммерческая организация, целью которой является продвижение, пропаганда, развитие проектного менеджмента в разных странах. PMI разрабатывает стандарты проектного менеджмента, занимается повышением квалификации специалистов.
IEEE - Институт инженеров по электротехнике и электронике. Поддержка научных и практических разработок в области электроники и вычислительной техники. Большие вложения в разработку стандартов в этой области.
Слайд 6

2. Стандарты, регламентирующие процессы жизненного цикла ПО ISO/IEC 12207 - Information

2. Стандарты, регламентирующие процессы жизненного цикла ПО

ISO/IEC 12207 - Information Technology

- Software Life Cycle Processes - Процессы жизненного цикла программных средств. Стандарт содержит определения основных понятий программной инженерии (в частности программного продукта и жизненного цикла программного продукта), структуры жизненного цикла как совокупности процессов, детальное описание процессов жизненного цикла.
SEI CMM - Capability Maturity Model (for Software) - модель зрелости процессов разработки программного обеспечения. Стандарт отвечает на вопрос: "Какими признаками должна обладать профессиональная организация по разработке ПО?". Профессионализм организации определяется через зрелость процесса, применяемого этой организацией. Выделяются пять уровней зрелости процесса.
ISO/IEC 15504 - Software Process Assessment - Оценка и аттестация зрелости процессов создания и сопровождения ПО. Является развитием и уточнением ISO 12207 и SEI CMM. Содержит расширенное по отношению ISO 12207 количество процессов жизненного цикла и 6 уровней зрелости процессов. Дается подробное описание схемы аттестации процессов, на основе результатов которой может быть выполнена оценка зрелости процессов и даны рекомендации по их усовершенствованию.
Подробный обзор основных положений стандарта ISO/IEC 12207 (и его российского аналога ГОСТ Р ИСО МЭК 12207-99) будет сделан позднее во втором разделе лекционного курса нашей дисциплины.
Стандарты SEI CMM и ISO/IEC 15504 рассматриваются при изучении дисциплины "Тестирование и управление качеством ПО".
Слайд 7

3. Образовательные стандарты в области программной инженерии ACM / IEEE CC2001

3. Образовательные стандарты в области программной инженерии
ACM / IEEE CC2001 -

Computing Curricula 2001 – Академический образовательный стандарт в области компьютерных наук. Выделены 4 основных раздела компьютерных наук: Computer science, Computer engineering, Software engineering и Information systems, по каждому из которых описаны области знаний соответствующего раздела, состав и планы рекомендуемых курсов.
PMBOK - Project Management Body of Knowledge - Свод знаний по управлению проектами. Содержит описания состава знаний по 9 разделам (областям знаний) управления проектами.
SWEBOK - Software Engineering Body of Knowledge - Свод знаний по программной инженерии. Содержит описания состава знаний по 10 разделам (областям знаний) программной инженерии, схематично представленным на рисунках 1 и 2.
ФГОС ВПО (Российский Федеральный государственный образовательный стандарт высшего профессионального образования) по направлению подготовки 231000 – "Программная инженерия". В основном соответствует требованиям международного стандарта SWEBOK.
Стандарт определяет:
основные направления профессиональной деятельности выпускников ВУЗов РФ, обучающихся по данному направлению;
требования к профессиональным компетенциям бакалавров (4 года обучения) и магистров (4+2 года обучения);
требования к условиям реализации образовательной программы;
структуру базовой части учебного плана.
Слайд 8

SWEBOK - Свод знаний по программной инженерии (часть 1)

SWEBOK - Свод знаний по программной инженерии (часть 1)

Слайд 9

SWEBOK - Свод знаний по программной инженерии (часть 2)

SWEBOK - Свод знаний по программной инженерии (часть 2)

Слайд 10

Дисциплины учебного плана, обеспечивающие формирование основных профессиональных компетенций в области программирования и проектирования программных систем

Дисциплины учебного плана, обеспечивающие формирование основных профессиональных компетенций в области программирования

и проектирования программных систем
Слайд 11

4. Профессиональные стандарты программной инженерии В июне 2007 года был опубликован

4. Профессиональные стандарты программной инженерии
В июне 2007 года был опубликован первый

сборник российских профессиональных стандартов в области информационных технологий, в который, в частности, вошли стандарты для девяти наиболее массовых и востребованных профессий программной инженерии.
Разработка стандартов осуществлялась при поддержке Ассоциации Предприятий Компьютерных и Информационных Технологий (АП КИТ) и ведущих российских и международных компаний ИT-отрасли: «АйТи», группа компаний Verysell, IBM, группа компаний IBS, Intel, «Лаборатория Касперского», Microsoft, «Прогноз» , группа компаний R-Style, «Техносерв А/С», «Яндекс», «1С».
Профессиональные стандарты – это ориентир по профессиям, результат систематизации профессий, динамично формирующихся в ИТ-отрасли. При этом каждый профессиональный стандарт – это нормативный документ рекомендательного характера, отражающий минимально необходимые требования к профессии, должностные обязанности, профессиональные компетенции, требования к уровням образования, стажу работы и сертификации в соответствии с квалификационными уровнями.
Кому и для чего нужны профессиональные стандарты ?
Работодателям - дают внятно сформулированные требования к профессиональным компетенциям специалистов, применение которых позволит оценить и повысить уровень качества их работы. Каждая компания может использовать стандарты для разработки собственных корпоративных требований к соответствующим должностям.
Образовательным учреждениям - предоставляют информацию, необходимую для создания качественных образовательных программ высшего и среднего профессионального образования, программ повышения квалификации и профессиональной переподготовки специалистов, а также позволяют формировать систему оценки качества обучения в соответствии с требованиями работодателей.
Работникам - помогают лучше понять различия в выполнении функций на разных должностях и квалификационных уровнях, задают ориентиры профессионального роста и важны для управления собственной карьерой.
Государству - полезны при создании качественных образовательных стандартов и формировании политики в области занятости населения.
Слайд 12

Уровни подготовки специалистов в области программной инженерии Полные тексты профессиональных стандартов

Уровни подготовки специалистов в области программной инженерии Полные тексты профессиональных стандартов опубликованы

на официальном сайте АП КИТ: http://www.apkit.ru/default.asp?artID=5573
Слайд 13

5. Типовая ролевая модель команды программного проекта Ведущую роль в реализации

5. Типовая ролевая модель команды программного проекта

Ведущую роль в реализации

программного проекта играет правильная организация команды разработчиков:
определение ролевой модели команды
подбор исполнителей на каждую "роль"
организация их взаимодействия в процессе выполнения проекта.
Состав команды определяется особенностями проекта, применяемыми технологиями и инструментальными средствами, опытом и уровнем профессиональной подготовки коллектива.
Классический вариант состава команды включает следующие роли:
Менеджер проекта
Проектировщик
Разработчик
Тестировщик
Инженер по качеству
Технический писатель
Технолог разработки ПО
Инженерный психолог
Инженер по маркетингу
Слайд 14

Типовая ролевая модель команды программного проекта Менеджер проекта - главное действующее

Типовая ролевая модель команды программного проекта
Менеджер проекта - главное действующее

лицо, обладающее знаниями и навыками, необходимыми для успешного управления проектом.
Его основные функции:
подбор и управление кадрами;
подготовка и исполнение плана проекта;
руководство командой;
обеспечение связи между подразделениями;
обеспечение готовности продукта.
Слайд 15

Типовая ролевая модель команды программного проекта Проектировщик – занимается проектированием архитектуры

Типовая ролевая модель команды программного проекта

Проектировщик – занимается проектированием архитектуры высокого

уровня и осуществляет контроль ее выполнения.
Основные функции проектировщика:
Анализ требований.
Разработка архитектуры и основных интерфейсов.
Участие в планировании проекта.
Контроль выполнения проекта.
Участие в подборе кадров.
В небольших командах функции проектировщика обычно распределяются между менеджером проекта и разработчиками, в больших проектах эти функции может исполнять отдельная группа или целый отдел.
Слайд 16

Типовая ролевая модель команды программного проекта Разработчик – роль, ответственная за

Типовая ролевая модель команды программного проекта

Разработчик – роль, ответственная за непосредственное

создание конечного продукта. Помимо собственно программирования (кодирования) в его функции входит:
Контроль архитектурных и технических спецификаций продукта.
Подбор технологических инструментов и стандартов.
Диагностика и разрешение всех технических проблем.
Контроль за работой тестировщиков, технологов, разработчиков документации.
Мониторинг состояния продукта (ведение списка обнаруженных ошибок).
Подбор и контроль использования стандартов и инструментов разработки.
Слайд 17

Типовая ролевая модель команды программного проекта Тестировщик – роль, ответственная за

Типовая ролевая модель команды программного проекта

Тестировщик – роль, ответственная за удовлетворение

требований к продукту (функциональных и нефункциональных).
В функции тестировщика входит:
Составление плана тестирования. План тестирования составляет один из элементов проекта и составляется до начала реализации проекта. Время, отводимое в плане на тестирование может быть сопоставимо с временем разработки.
Контроль выполнения плана тестирования. Важнейшая функция контроля – поддержка базы данных зарегистрированных ошибок. В этой базе регистрируется: кто, когда и где обнаружил, описание ошибки, описание состояния среды; статус ошибки: приоритет, кто разрешает; состояние ошибки: висит, в разработке, разрешена, проблемы. Эта база должна быть доступна всем, т.к. в тестировании принимают участие все члены команды.
Разработка тестов - самая трудоемкая часть в работе тестировщика. Тестирование должно обеспечить полную проверку функциональности при всех режимах работы продукта.
Автоматизация тестирования - включает автоматизацию составления тестов, автоматизацию процесса запуска тестов и автоматизацию обработки результатов тестирования. Ввиду важности задачи автоматизации тестирования, в крупных проектах может быть введен новый участник (роль) – инженер по автоматизации.
Выбор стандартов, метрик и инструментов для организации процесса тестирования.
Организация бета-тестирования - тестирования почти готового продукта внешними тестерами (пользователями, в случае разработки коробочного продукта).
Слайд 18

Типовая ролевая модель команды программного проекта Инженер по качеству. Качество конечного

Типовая ролевая модель команды программного проекта

Инженер по качеству.
Качество конечного продукта

обеспечивается тестированием, входящим в обязанности тестировщика.
В небольших проектах функции инженера по качеству возлагаются на тестировщика, однако функции инженера по качеству гораздо шире – он обеспечивает :
Качество процесса разработки – обеспечивается выполнением стандартов качества основных процессов жизненного цикла ПО;
Качество (уровень) организации - обеспечивается выполнением стандартов качества организационных процессов жизненного цикла ПО.
Основные функции инженера по качеству :
Составление плана качества. План качества имеет долговременный характер и включает все мероприятия по повышению качества (на всех уровнях). План тестирования – его оперативная составляющая.
Описание процессов. Описание процессов является их формализацией. При описании вводятся метрики процесса, влияющие на качество продукта.
Оценка процессов включает регистрацию хода выполнения процессов и оценку значений установленных метрик процессов. Выявление слабых мест и выработка рекомендаций по улучшению процессов.
Улучшение процессов - переопределение процесса, автоматизация части работ, обучение персонала. Повышение качества процессов требует участия всех действующих лиц. Принятое решение должно быть обосновано, всем понятно и всеми принято.
Слайд 19

Типовая ролевая модель команды программного проекта Технический писатель - разработчик проектной,

Типовая ролевая модель команды программного проекта

Технический писатель - разработчик проектной, программной

и эксплуатационной документации, как части программного продукта. Технический писатель все время работает с продуктом (его готовыми версиями) и, выступая от имени пользователя, видит все недочеты и несоответствия.
Функции технического писателя:
Разработка плана документирования, который включает состав, сроки подготовки и порядок тестирования документов.
Выбор и разработка стандартов и шаблонов подготовки документов.
Выбор средств автоматизации документирования.
Разработка документации.
Организация тестирования документации.
Участие в тестировании продукта.
Слайд 20

Типовая ролевая модель команды программного проекта Технолог разработки ПО обеспечивает выполнение

Типовая ролевая модель команды программного проекта

Технолог разработки ПО обеспечивает выполнение следующих

функций:
Поддержка модели жизненного цикла программного продукта - создание служб и структур по поддержке работоспособности принятой модели ЖЦ ПО. В поддержке модели ЖЦ принимают участие все, но контроль возложен на технолога.
Создание и сопровождение среды сборки продукта. Функция особенно важна на завершающих этапах разработки или при использовании модели прототипирования, когда сборка проводится достаточно часто (в некоторых случаях - ежедневно). Среда сборки должна быть подготовлена заранее, сборка должна проводиться быстро и без сбоев.
Создание и сопровождение процедуры установки с тем, чтобы каждая сборка устанавливалась автоматически с учетом версии и конфигураций сред.
Управление исходными текстами - сопровождение и администрирование системы управления версиями исходных текстов.
Слайд 21

Типовая ролевая модель команды программного проекта Инженерный психолог и Инженер по

Типовая ролевая модель команды программного проекта

Инженерный психолог и Инженер по маркетингу

– эти роли присутствуют, как правило, в командах, формируемых для создания коробочных программных продуктов (ориентированных на массового потребителя и большие тиражи выпуска).
В малых командах некоторые роли могут совмещаться, в больших – под все или некоторые роли могут выделяться целые группы или отделы: отдел проектирования, отдел тестирования, отдел контроля качества, отдел подготовки документации и т.д.
Ролевые модели команд, создаваемых в софтверных компаниях под конкретные программные проекты, могут быть самыми разнообразными и определяются масштабом проекта, используемой методологией и корпоративными стандартами разработки ПО.