Дорожная карта использования UML в проекте IronHand

Программирование - это развлечение, но разработка качественных программ – тяжелый труд.
Крейг Ларман

Дорожная карта в масштабе 1:50

(из лекций по Философии за 2-ой курс)

Организованный. 
	Организованный процесс.
		Организованный процесс разработки.
			Организованный процесс разработки программного обеспечения.

Организованный – значит Упорядоченный!
Каков порядок процесса разработки ?
Каковы его этапы ?







Анализ.
Проектирование.
Реализация.







Анализ – это достаточно широкое понятие. Его содержание более точно отражают термины анализ требований (requirements analysis) – исследование требований к системе; и объектный анализ (object analysis) – исследование объектов предметной области.

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

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

Вы можете возразить: "3-х этапов мало!" - ведь есть еще этап тестирования и этап поддержки ПО и так далее и тому подобное --- не будем заниматься казуистикой. Ключевые этапы названы, слиянием и почкованием этих терминов пусть занимаются те, кому не в декабре проект сдавать.

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

Everything is good in its season, There is time for everything.






Переходим к дорожной карте в масштабе 1:5

Какие процессы преобладают в природе ?
Круговорот воды, круговорот CO2, круговорот денег в экономике, круговорот информации в Интернете...

Что объединяет эти процессы ? – они – Циклические.
Большинство процессов разработки ПО – циклические процессы.

Да.. это вам не сдал лабу и забыл.

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

Выявили требования – молодца, идем дальше. Недели через четыре, будем править эти требования – иначе не бывает. (Величина итерации, сильно зависит от проекта – факторов много).






Переходим к дорожной карте в масштабе 1:1

UML – это только система обозначений. Гораздо важнее изучить принципы объектно-ориентированного анализа и проектирования, научиться «мыслить объектам».
Крейг Ларман

И так у нас есть UML и мы должны пройти 3-и этапа:
Анализ, проектирование и реализацию.

Что характеризует такую последовательность этапов ? Уменьшение абстрактности – от анализа требований, мы доходим до class в C#.

Всегда отдавай себе отчет,
На каком уровне абстракции,
Ты находишься.

Одни и те же UML-диаграммы, один и те же кривые и овалы, используются на всех этапах разработки. Но их интерпретация, вкладываемый в них смысл зависят от этапа – зависят от уровня абстракции. Вообще говоря, говорить «Диаграмма классов» или «Диаграмма последовательности» - это не правильно, обе эти диаграммы (а также другие диаграммы) могут использоваться на разных уровнях абстракции. Поэтому правильнее уточнять уровень абстракции – «Концептуальная диаграмма последовательности», «Диаграмма классов уровня проектирования» и т.д.

Всегда отдавай себе отчет,
Насколько детально,
Ты будешь моделировать.

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

Это хорошо знают художники – они кладут на полотно вначале крупные мазки, а детали прорабатывают позже. Если же вы начинаете мешать все в одну кучу, то лучше сменить работу.

Ну, и собственно то, зачем вы сюда пришли: UML ROAD MAP (140kb).

Уровень абстракции – это масштаб. Легко заметить, что дорожные карты тоже делают с разным масштабом ;)






Переходим к дорожной карте в масштабе 50:1

Ниже приводятся примеры UML диаграмм одним списком: (Извиняюсь за качество рисунков, в первую очередь старался уменьшить их как можно сильнее - получилось в среднем примерно 11 кб на рисунок)

Примеры UML диаграмм:

  1. Пример "Проектирование Todo-Manager" (Роман Суворов)
    1. Анализ
    2. Проектирование
    3. Реализация
  2. Пример "Торговый автомат" (Крейг Ларман)
    1. Анализ
  3. Пример "Книга" (Крейг Ларман)
    1. Уровни абстракции