Программирование - это развлечение, но разработка качественных программ – тяжелый труд.
Крейг Ларман
Организованный. Организованный процесс. Организованный процесс разработки. Организованный процесс разработки программного обеспечения.
Анализ.
Проектирование.
Реализация.
В процессе проектирования (design) основное внимание уделяется концептуальному решению, обеспечивающему выполнение основных требований, но не вопросам его реализации.
В процессе реализации происходит непосредственное воплощение проекта в коде. Сегодня этот процесс подвержен наибольшей автоматизации. Это может быть индусский кодер, это может быть ECO, это можем быть мы с вами, но зачем ?
Вы можете возразить: "3-х этапов мало!" - ведь есть еще этап тестирования и этап поддержки ПО и так далее и тому подобное --- не будем заниматься казуистикой. Ключевые этапы названы, слиянием и почкованием этих терминов пусть занимаются те, кому не в декабре проект сдавать.
Вы можете возразить, что некачественная, неоптимальная реализация может загубить весь проект. Качество кодирования достигаем тестами, оптимизацию – профайлером. Иными словами, качество продукта крайне сложно повысить на последнем этапе разработки – тут либо терапевтически лечить локализованные баги, либо хирургически оптимизировать найденные узкие места.
Что объединяет эти процессы ? – они – Циклические.
Большинство процессов разработки ПО – циклические процессы.
Да.. это вам не сдал лабу и забыл.
Выявили требования – молодца, идем дальше. Недели через четыре, будем править эти требования – иначе не бывает. (Величина итерации, сильно зависит от проекта – факторов много).
UML – это только система обозначений.
Гораздо важнее изучить принципы объектно-ориентированного анализа и проектирования, научиться «мыслить объектам».
Крейг Ларман
Что характеризует такую последовательность этапов ? Уменьшение абстрактности – от анализа требований, мы доходим до class в C#.
Всегда отдавай себе отчет,
На каком уровне абстракции,
Ты находишься.
Одни и те же UML-диаграммы, один и те же кривые и овалы, используются на всех этапах разработки. Но их интерпретация, вкладываемый в них смысл зависят от этапа – зависят от уровня абстракции. Вообще говоря, говорить «Диаграмма классов» или «Диаграмма последовательности» - это не правильно, обе эти диаграммы (а также другие диаграммы) могут использоваться на разных уровнях абстракции. Поэтому правильнее уточнять уровень абстракции – «Концептуальная диаграмма последовательности», «Диаграмма классов уровня проектирования» и т.д.
Всегда отдавай себе отчет,
Насколько детально,
Ты будешь моделировать.
Вы должны научиться ограничивать себя. Ограничивать свой поток сознания и мыслей тем уровнем абстракции, на котором вы находитесь.
Это хорошо знают художники – они кладут на полотно вначале крупные мазки, а детали прорабатывают позже. Если же вы начинаете мешать все в одну кучу, то лучше сменить работу.
Ну, и собственно то, зачем вы сюда пришли: UML ROAD MAP (140kb).
Уровень абстракции – это масштаб. Легко заметить, что дорожные карты тоже делают с разным масштабом ;)
Ниже приводятся примеры UML диаграмм одним списком: (Извиняюсь за качество рисунков, в первую очередь старался уменьшить их как можно сильнее - получилось в среднем примерно 11 кб на рисунок)
Примеры UML диаграмм: