1 of 38

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

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

Лекция 9

2 of 38

Темы лекции

  • Жизненный цикл ИС и диаграммы UML

3 of 38

  • RUP
    • Начальная стадия (Inception)
    • Уточнение (Elaboration)
    • Построение (Construction)
    • Внедрение (Transition)

  • ГОСТ 19.102-77
    • Техническое задание
    • Эскизный проект
    • Технический проект
    • Рабочий проект
    • Внедрение
      • допускается исключать вторую стадию разработки, в технически обоснованных случаях — вторую и третью стадию (прописывается в ТЗ)

Жизненный цикл ПО

4 of 38

1. Формирование требований к АС

2. Разработка концепции АС

3. Техническое задание

4. Эскизный проект

5. Технический проект

6. Рабочая документация

7. Ввод в действие

8. Сопровождение АС

Жизненный цикл ПО ГОСТ 34.601-90 Автоматизированные системы. Стадии создания

5 of 38

RUP. Начальная стадия

  • Формируются видение и границы проекта (Концепция продукта)
  • Создается экономическое обоснование (business case).
  • Определяются основные требования, ограничения и ключевая функциональность продукта.
  • Создается базовая версия модели прецедентов.
  • Оцениваются риски.

6 of 38

RUP. Уточнение (Elaboration)

  • Производится анализ предметной области
  • Документирование требований, включая детальное описание для большинства вариантов использования
  • Построение и тестирование архитектуры ИС

  • Обновленное экономическое обоснование и более точные оценки сроков и стоимости.

7 of 38

Архитектура программного обеспечения (software architecture)

  • Архитектура - — совокупность важнейших решений об организации программной системы, включает:
    • выбор структурных элементов и их интерфейсов, с помощью которых составлена система, а также их поведения в рамках сотрудничества структурных элементов;
    • соединение выбранных элементов структуры и поведения во всё более крупные системы;
    • архитектурный стиль, который направляет всю организацию — все элементы, их интерфейсы, их сотрудничество и их соединение

8 of 38

Документирование архитектуры программного обеспечения (ПО)

  • Упрощает процесс коммуникации между разработчиками, позволяет зафиксировать принятые проектные решения и предоставить информацию о них эксплуатационному персоналу системы, повторно использовать компоненты и шаблоны проекта в других;
  • Разработка документации согласно ГОСТ серии 19, 34. ГОСТ РВ 0019

9 of 38

Жизненный цикл ПО и диаграммы UML анализ предметной области и сбор требований к ПО

  • Диаграммы вариантов использования
  • Диаграммы деятельности
  • Словарь системы
  • Диаграммы классов (приблизительные)

10 of 38

Жизненный цикл ПО и диаграммы UML Анализ полученных данных

  • Диаграмма классов со стереотипами (образцами поведения) «граничный класс», «сущность», «управление»
    • «граничный класс» отображает класс, который взаимодействует с внешними актантами, «сущность» – отображает классы, которые являются хранилищами данных, а «управление» – классы, управляющие запросами к сущностям.

11 of 38

Жизненный цикл ПО и диаграммы UML Проектирование

  • Модель проектирования отражает физическую реализации системы и описывает создаваемый продукт на уровне классов и компонентов
  • В отличие от модели анализа, модель проектирования имеет явно выраженную зависимость от условий реализации, применяемых языков программирования и компонентов.

12 of 38

Детализация работы объектов

    • Диаграммы классов, диаграммы объектов, диаграммы состояний, диаграммы кооперации, диаграммы взаимодействия.
    • Дополнительно может создаваться модель развертывания, которая реализуется на основе диаграммы развертывания (топологии) и диаграммы компонентов.

13 of 38

Диаграммы развертывания (Deployment diagram)

  • Назначение
    • Описание топологии системы
    • Oписание процесса установки программного продукта
  • Узлы + Отношения

14 of 38

Вычислительные Узлы

  • Узел (node) - это элемент реальной (физической) системы, который существует во время функционирования программного продукта и представляет собой некоторый вычислительный ресурс.
  • Графически для изображения узла используется куб, содержащий имя узла.

15 of 38

Компонент (component)

  • Компонент - это физическая заменяемая часть системы, которая соответствует некоторому набору интерфейсов и обеспечивает его реализацию.
  • Графически компонент изображается в виде прямоугольника с вкладками, содержащего обычно только имя
  • Компонент может разрабатываться и тестироваться независимо от системы.
  • Виды компонентов:
    • Исходные файлы (.cpp, .h, .java…).
    • Бинарные файлы (.dll, .ocx…).
    • Исполняемые файлы (.exe).
    • исполняемые файлы на интерпретируемых языках
    • файлы с двоичными данными
    • таблицы баз данных

16 of 38

Компоненты в UML

  • По смыслу компонент – реализация подсистемы.
  • На этапе проектирования – подсистемы. На этапе реализации – компоненты.

IAirport

17 of 38

диаграммы компонентов

Компонент,

предоставляющий

интерфейс

Компонент,

использующий

интерфейс

18 of 38

Диаграммы компонентов

  • Этот вид диаграмм предназначен для анализа аппаратной части системы, то есть «железа», а не программ.          
  • Для каждой модели создается только одна такая диаграмма, отображающая процессоры (Processor), устройства (Device) и их соединения. 

19 of 38

Диаграммы топологии(развертывания)Пример

Компоненты, размещенные на узле

20 of 38

Диаграммы топологии (развертывания)Deployment diagram

21 of 38

RUP-Построение. ГОСТ-19 – Рабочий проект

Реализация (кодирование, тестирование)

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

22 of 38

Диаграмма развертывания ИС атмосферной коррекции спутниковых данных

23 of 38

ИС атмосферной коррекции спутниковых данных таблица размещения компонент ИС на узлах

24 of 38

Реализация объектно-ориентированного проекта - перевод диаграмм в код

Реализация на языке C++ �

      • Реализация компонентов
      • Реализация классов
          • Атрибуты
          • Методы
          • Наследование

25 of 38

Атрибуты, Методы, Наследование

class Device {

public:

int serial_number = 12345678;

void turn_on() {

cout << "Device is on" << endl;

}

private:

int pincode = 87654321;

public:

// constructor

Device() {

cout << "Device constructor called" << endl;

}

// destructor

~Device() {

cout << "Device destructor called" << endl;

}

};

class Computer: public Device {

public:

void say_hello() {

turn_on();

cout << "Welcome to Windows!" << endl;

}

};

class Laptop: public Computer {

public:

Laptop() {

cout << "Laptop constructor called" << endl;

}

~Laptop() {

cout << "Laptop destructor called" << endl;

}

};

26 of 38

Порождение и удаление объектов

Laptop Comp1;

Comp1. serial_number=129926001;

Laptop *MyComp= new Laptop;

MyComp->serial_number=129926033;

….

delete MyComp;

27 of 38

Часть - целое

28 of 38

Генерация кода из диаграмм UML

29 of 38

Часть - целое

// Device.h

#include "Monitor.h"

#include "HDD.h"

class Device {

public:

int serial_number = 12345678;

HDD [4];

void turn_on();

void Device();

void ~Device();

private:

void pincode = 87654321;

Monitor *D;

};

// Monitor.h

class Monitor {

public:

string Model;

int Size;

void set_master();

void set_slave();

};

//HDD.h

class HDD {

public:

string Model;

float Volume;

void Reserve_copy();

private:

void Formate();

};

30 of 38

Реализация зависимостей помощью указателей�Пример: зависимость "много-к-одному" между классами Item и Group

class Item

{

public:

virtual void cut ();

virtual void move

(Length deltax, Length deltay) = 0;

virtual Boolean pick

(Length px, Length py) = 0;

virtual void ungroup () = 0;

private: Group* grou;

friend Group::add_item (Item*);

friend Group::remove_item (Item*);

public:

Group* get_group ()

{return grou; };

};

Методы Group::add_item и Group::remove_item могут изменять приватные (private) атрибуты класса Item, хотя они определены в его подклассе Group, так как они определены как дружественные (friends) для класса Item.

class Group: public Item

{

public:

void cut ();

void move (Length deltax, Length deltay);

Boolean pick (Length px, Length py) = 0;

void ungroup () { };

private:

ItemSet* items;

public:

void add_item (Item*);

void remove_item (Item*);

ItemSet* get_items ()

{return items;}

};

void Group::add_item (Item* item)

{ item->group = this; items->add (item); }  

void Group::remove_item (Item* item);

{ item->group = 0; items->remove (item); }

31 of 38

Зависимые объекты и коллективные классы. �Пример: класс ItemSet (набор объектов)

class ItemSet

{

public:

ItemSet(); //создать пустой набор объектов

~ItemSet(); //уничтожить набор объектов

void add(Item*); //включить объект в набор

void remove(Item*); //исключить объект из набора

Boolean includes(Item*); //проверить наличие объекта в наборе

int size(Item*); //определить количество объектов

};

32 of 38

Жизненный цикл ПО и диаграммы UML Тестирование

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

33 of 38

Жизненный цикл ПО и диаграммы UML внедрение

RUP создается финальная версия продукта и передается  от разработчика к заказчику. Это включает в себя программу бета- -, обучение пользователей, а также определение качества продукта. В случае, если качество не соответствует ожиданиям пользователей или критериям, установленным в фазе Начало, фаза Внедрение повторяется снова. Выполнение всех целей означает достижение вехи готового продукта (Product Release) и завершение полного цикла разработки.

ГОСТ 19 – подготовка и передача программы и программной документации, утверждение акта о передаче программы и ее сопровождении

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

34 of 38

Жизненный цикл ПО и диаграммы UML

Use case diagram

Activity diagram

Sequence diagram

Class diagram

Component diagram

Deployment diagram

35 of 38

UML Реинжиниринг. Разработка ПО не «с нуля»

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

36 of 38

UML Реинжиниринг

37 of 38

Расширение области применения UML

  • UML для моделирования мобильных устройств и приложений
  • UML для моделирования бизнеса
  • UML для моделирования процессов взаимодействия организаций и ведомств, в т.ч. на международном уровне

38 of 38

Литература к лекции