1 of 45

Объектно-ориентированное программирование и проектирование

© Хуторова Ольга Германовна

Лекция 1

2 of 45

Цели и назначение курса

  • Современные технологии проектирования программно-аппаратных систем
  • Студенты, завершившие изучение данной дисциплины должны:
    • знать все о жизненном цикле информационных систем;
    • иметь представление о современных технологиях проектирования и программирования; ориентироваться в особенности разработки информационных систем, управления проектами;
    • приобрести навыки анализа требований к ИС, проектирования и объектно-ориентированного моделирования ИС, написания документации по ГОСТ.

3 of 45

Основные разделы курса

  • принципы, методы и средства проектирования, тестирования и отладки, документирования и сопровождения программного обеспечения
  • моделирование ИС
  • CASE-технологии, особенности разработки и сопровождения программного обеспечения для рабочих групп
  • Инструменты управления проектами

4 of 45

Темы лекции

  • Системный подход к проектированию ИС (ПО)

    • Цели и задачи программной инженерии
    • Жизненный цикл и процессы разработки ИС
      • Понятие жизненного цикла ПО
      • Стандарты жизненного цикла
      • Модели жизненного цикла ПО

5 of 45

Бизнес и IT-проекты

Многие проекты:

Цель: Результат:

Функциональность

Время

Бюджет

6 of 45

Почему?

  • Сложность задач. Рост возможностей приводит к росту сложности решаемых задач и наоборот.
  • Человеческий фактор. Традиционные трудности управления коллективом.
  • Нехватка квалифицированных кадров.
  • Трудности в работе с заказчиками и будущими пользователями. Заказчики не знают, что они хотят. Пользователи плохо владеют ПК и не понимают, как он работает и что от него ждать. Все говорят на разных языках.
  • ...

7 of 45

Что делать? Как бороться со сложностью задач и управления?

Ответ: разрабатывать и внедрять специальные технологии.

  • Технологии создания ПО относятся не только к кодированию, но и к анализу, проектированию, управлению проектом, разработке документации...

8 of 45

Программная инженерия

  • Задачи программной инженерии:
    • Создать качественный продукт
    • Уложиться в бюджет
    • Уложиться в сроки

9 of 45

Цели программных инженеров. Качественный программный продукт...

Качественный программный продукт:

    • Должен представлять требуемую функциональность.
    • Быть удобным в сопровождении.
    • Быть надежным.
    • Быть эффективным.
    • Быть удобным в использовании.

10 of 45

Цели программных инженеров. Бюджет

Создание ПО должно укладываться в бюджет.

  • Типовое распределение средств:
    • 60% – разработка.
    • 40% – тестирование.
    • Развитие – часто больше, чем создание.
  • Детали зависят от специфики предметной области, требований к ПО, используемых подходов к организации разработки.

11 of 45

Цели программных инженеров. Сроки

Создание ПО должно укладываться в сроки

  • Грамотное планирование
  • Анализ возможных рисков и способы реагирования
  • Борьба за четкие границы проекта
  • Мотивация сотрудников

12 of 45

Стадии процесса создания ИС Все стадии основаны на своих технологиях и стандартах

Анализ и

Проектирование

Разработка

Внедрение

Эксплуатация

13 of 45

Нормативно-методическоеобеспечение создания ПО

  • порядок разработки, внедрения и сопровождения ПО;
  • общие требования к составу ПО и связям между его компонентами, к его качеству;
  • виды, состав и содержание проектной и программной документации.

14 of 45

ГОСТы Стандарты в области информационной технологии

ГОСТ Р ИСО/МЭК 8824-3-2002 Информационная технология. Абстрактная синтаксическая нотация версии один

ГОСТ Р ИСО/МЭК 10746-3-2001 Управление данными и открытая распределенная обработка.

ГОСТ Р ИСО/МЭК 15271-02 Процессы жизненного цикла программных средств

ГОСТ Р ИСО/МЭК 15910-2002 Процесс создания документации пользователя программного средства

15 of 45

ГОСТ 34.ххх Стандарты информационной технологии

  • ГОСТ 34.201-89 Виды, комплектность и обозначения документов при создании автоматизированных систем
  • ГОСТ 34.320-96 Концепции и терминология для концептуальной схемы и информационной базы
  • ГОСТ 34.321-96 Информационные технологии. Система стандартов по базам данных. Эталонная модель управ
  • ГОСТ 34.601-90 Автоматизированные системы. Стадии создания.
  • ГОСТ 34.602-89 Техническое задание на создание автоматизированной системы
  • ГОСТ 34.603-92 Информационная технология. Виды испытаний автоматизированных систем
  • РД 50-34.698-90 Автоматизированные системы. Требования к содержанию документов.

16 of 45

ГОСТ Р ИСО/МЭК 25051-2017

  • НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
  • Информационные технологии
  • Системная и программная инженерия
  • ТРЕБОВАНИЯ И ОЦЕНКА КАЧЕСТВА СИСТЕМ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (SQuaRE)
  • Требования к качеству готового к использованию программного продукта (RUSP) и инструкции по тестированию

Information technologies. Systems and software engineering. Systems and software Quality Requirements and Evaluation (SQuaRE). Requirements for quality of Ready to Use Software Product (RUSP) and instructions for testing

17 of 45

ГОСТ-ы по документации ПО

  • ГОСТ 19.101-77. Единая система программной документации. ВИДЫ ПРОГРАММ И ПРОГРАММНЫХ ДОКУМЕНТОВ
  • ГОСТ Р ИСО/МЭК 15910-2002 — Процесс создания документации пользователя программного средства
  • ГОСТ РВ 0019-001-2006 - требования к содержанию и оформлению документов, разрабатываемых и применяемых на протяжении жизненного цикла программного обеспечения встроенных систем изделий военной техники, которое разрабатывается по контракту между разработчиком и заказчиком.

18 of 45

ГОСТ 19.ххх Единая система программной документации (ЕСПД)

  • ГОСТ 19.001-77 Общие положения
  • ГОСТ 19781-90 Термины и определения.
  • ГОСТ 19.101-77 Виды программ и программных документов
  • ГОСТ 19.102-77 Стадии разработки
  • ГОСТ 19.103-77 Обозначения программ и программных документов
  • ГОСТ 19.104-78 Основные надписи
  • ГОСТ 19.105-78 Общие требования к программным документам
  • ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом
  • ГОСТ 19.201-78 Техническое задание, требования к содержанию и оформлению
  • ГОСТ 19.202-78 Спецификация. Требования к содержанию и оформлению
  • ГОСТ 19.301-79 Программа и методика испытаний. Требования к содержанию и оформлению
  • ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению
  • ГОСТ 19.402-78 Описание программы

19 of 45

ГОСТ 19.ххх Единая система программной документации (ЕСПД)

  • ГОСТ 19.404-79 Пояснительная записка. Требования к содержанию и оформлению
  • ГОСТ 19.501-78 Формуляр. Требования к содержанию и оформлению
  • ГОСТ 19.502-78 Описание применения. Требования к содержанию и оформлению
  • ГОСТ 19.503-79 Руководство системного программиста. Требования к содержанию и оформлению
  • ГОСТ 19.504-79 Руководство программиста. Требования к содержанию и оформлению
  • ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению
  • ГОСТ 19.506-79 Описание языка. Требования к содержанию и оформлению
  • ГОСТ 19.507-79 Ведомость эксплуатационных документов
  • ГОСТ 19.508-79 Руководство по техническом обслуживанию. Требования к содержанию и оформлению
  • ГОСТ 19.601-78 Общие правила дублирования, учета и хранения
  • ГОСТ 19.602-78 Правила дублирования, учета и хранения программных документов, выполн-х печ. способом
  • ГОСТ 19.603-78 Общие правила внесения изменений
  • ГОСТ 19.604-78 Правила внесения изменений в программные документы, выполненных печатным способом

20 of 45

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

  • Основные понятия
    • жизненный цикл ПО
    • качество ПО
    • процесс разработки ПО
    • требования к ПО
    • архитектура ПО и пр.

21 of 45

Понятие жизненного цикла ПО

  • Весь период существования ПО, начиная с подготовки к его разработке, до того момента, когда полностью прекращается всякое использование ПО, называют жизненным циклом ПО.
  • Жизненный цикл ПО - составная часть жизненного цикла программно-аппаратной системы, в которую это ПО входит.
  • В качестве основных элементов ЖЦ выделяют технологические процессы
    • анализ предметной области
    • сбор требований
    • проектирование
    • кодирование
    • тестирование
    • сопровождение
    • др. виды деятельности.

22 of 45

Артефакты и роли

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

23 of 45

Модели процесса

  • Классические модели процесса разработки ПО:
    • Каскадная модель (Waterfall model)
    • Эволюционная модель (Evolutionary development)
  • Итерационный подход
    • Модель пошаговой разработки
    • Спиральная модель разработки

24 of 45

Каскадная модель

Эксплуатация

Сопровождение

Проектирование

Реализация

Внедрение

Анализтребований

  • Недостатки: негибкость
    • фаза должна быть закончена, прежде чем приступить к следующей
    • Набор фаз фиксирован
    • Тяжело реагировать на изменения требований
  • Использование: там, где требования хорошо понятны и стабильны (сложные расчетные системы, системы реального времени ).

  • Фиксированный набор стадий
  • Каждая стадия -> законченный результат
  • Стадия начинается, когда закончилась предыдущая.

25 of 45

Эволюционная модель

    • Недостатки:
      • Система часто плохо структурирована
      • Проект «не прозрачен»
      • Требуются средства для быстрой разработки
    • Подходит для малых и средних проектов

26 of 45

Итерационный подход

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

    • Модель пошаговой разработки
    • Спиральная модель разработки

27 of 45

Модель пошаговой разработки(Миллс):

  • Шаги. Каждый шаг – работающий прототип.
  • Наиболее важные для заказчика компоненты – в начале.
  • Требования фиксированы во время шага.
  • Для шага можно применять каскадную или эволюционную модель.

План требований

Детализация требований

Архитектура системы

Шаг разработки

Шаг аттестации

Шаг сборки

Аттестация системы

СИСТЕМА

Система не готова

28 of 45

Спиральная модель (Боэм):

  • Каждый виток спирали соответствует 1 итерации.
    • создание фрагмента или версии ПО, на нем уточняются цели и характеристики проекта, планируются работы следующего витка спирали.
  • Неполное завершение работ на каждом этапе позволяет переходить на следующий этап, не дожидаясь полного завершения работы на текущем.
  • Главная задача - как можно быстрее показать пользователям системы работоспособный продукт.
  • Основная проблема - определение момента перехода на следующий этап.
    • Для ее решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла. Переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена.

29 of 45

Стандарты моделей жизненного цикла

  • IEEE —Institute of Electrical and Electronic Engineers, Институт инженеров по электротехнике и электронике;
  • ISO — International Standards Organization, Международная организация по стандартизации;
  • EIA — Electronic Industry Association, Ассоциация электронной промышленности;
  • IEC — International Electrotechnical Commission, Международная комиссия по электротехнике;

некоторыми национальными и региональными институтами и организациями

  • ANSI — American National Standards Institute, Американский национальный институт стандартов;
  • SEI — Software Engineering Institute, Институт программной инженерии;
  • ECMA — European Computer Manufactures Association, Европейская ассоциация производителей компьютерного оборудования;

30 of 45

IEEE 1074-1997 — IEEE Standard for Developing Software Life Cycle Processes

  • Описывает ограничения, которым должен удовлетворять любой такой процесс, и общую структуру процесса разработки.
  • В рамках этой структуры определяет основные виды деятельностей, выполняемых в этих процессах и документы, требующиеся на входе и возникающие на выходе этих деятельностей.
    • Всего рассматриваются 5 подпроцессов, 17 групп деятельностей и 65 видов деятельности.
      • Подпроцесс разработки состоит из групп деятельностей по выделению требований, по проектированию и по реализации.
      • Группа деятельностей по проектированию включает архитектурное проектирование, проектирование баз данных, проектирование интерфейсов, детальное проектирование компонентов.

31 of 45

ГОСТ Р ИСО/МЭК 12207 (ISO/IEC 12207)

  • «Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств»
  • идентичный международному стандарту ISO/IEC 12207:2008 «System and software engineering — Software life cycle processes».

32 of 45

ГОСТ Р ИСО/МЭК 12207 Основные процессы жизненного цикла ПО

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

33 of 45

ГОСТ Р ИСО/МЭК 12207 Вспомогательные процессы жизненного цикла ПО

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

34 of 45

ГОСТ Р ИСО/МЭК 12207 Организационные процессы жизненного цикла ПО

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

35 of 45

Процессы строятся из отдельных видов деятельности ГОСТ Р ИСО/МЭК 12207

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

36 of 45

ГОСТ Р ИСО/МЭК 12207 Каждое действие включает ряд задач

  • Например, подготовка заявочных предложений должна предусматривать:

    • Формирование требований к системе
    • Формирование списка программных продуктов
    • Установление условий и соглашений
    • Описание технических ограничений (среда функционирования системы и т. д.)

37 of 45

ГОСТ Р ИСО/МЭК 12207

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

38 of 45

ГОСТ Р 56923-2016/ISO/IEC TR 24748-3:2011

  • НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
  • Информационные технологии
  • СИСТЕМНАЯ И ПРОГРАММНАЯ ИНЖЕНЕРИЯ
  • Управление жизненным циклом
  • руководство по применению ИСО/МЭК 12207
  • (Процессы жизненного цикла программных средств)

39 of 45

Методологии и технологии проектирования ПО

  • CASE (Computer Aided Software Engineering) -технология представляет собой совокупность методов проектирования ПО и набор инструментальных средств, позволяющих моделировать предметную область, анализировать эту модель на всех стадиях разработки и сопровождения ПО и разрабатывать приложения в соответствии с потребностями пользователей
    • последовательность технологических операций проектирования;
    • критерии и правила для оценки результатов выполнения технологических операций;
    • нотации (графические и текстовые средства), используемые для описания проектируемой системы.

40 of 45

Инструменты управления проектами

  • Работа коллектива и смежников с множеством проектов
  • Создать для каждого проекта цель, задачи, подзадачи
  • Организовать сотрудников в системе, связать каждого со своими задачами
  • Планировщик заданий, чаты и т.п.

    • Trello, YouGile, Bitrix24, Jira, ClickUp, YouTrack, Скрам, Redmine, WebCollab, ClockingIT, Codendi, Egroupware, Collabtive, Project Open

41 of 45

Инструменты управления проектами

  • Системы контроля версий
  • GitLab, Github, Bitbucket

42 of 45

Trello

  • https://trello.com/

43 of 45

44 of 45

Задание на первое производственное совещание

Сформировать рабочую группу, распределить роли

Определить модель ЖЦ проекта

выбрать ГОСТы, которыми нужно руководствоваться при работе над проектом, обосновать выбор

Составить график работ до конца курса (14 недель)

Выбрать инструменты управления проектом (Trello, GitLab, Github, Bitbucket, YouGile, Bitrix24, Jira, ClickUp, YouTrack, Скрам, Redmine, WebCollab, ClockingIT, Codendi, Egroupware, Collabtive, Project Open), обосновать выбор, отразить задачи и график работ рабочей группы (скриншоты)

Сделать промежуточный отчет в виде презентации

45 of 45

Список литературы к лекции

  • И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002.
  • Э. Хант, Д. Томас. Программист-прагматик. М.: Лори, 2004.
  • Е. А. Жоголев. Лекции по технологии программирования: Учебное пособие. М.: Издательский отдел факультета ВМиК МГУ, 2001.
  • А.М. Вендров Современные Технологии Создания Программного Обеспечения (обзор) // Jet Info Информационый бюллетень № 4 (131)/2004
  • ГОСТ Р ИСО/МЭК 12207-2010
  • Trello.com