Показаны сообщения с ярлыком Разное. Показать все сообщения
Показаны сообщения с ярлыком Разное. Показать все сообщения

вторник, 28 декабря 2021 г. - www.msmirnov.ru

Тренды 2021 в ИТ РФ (мой взгляд)

Тезисно для себя зафиксировал основные замеченные, наблюдаемые на рынке ИТ в РФ в 2021.

Понятно, что зрели они давно, но в этом году, что называется, "прорвало".

Обзор не претендует на полноту и отражает исключительно мои наблюдения.

 

Что произошло

  • Пандемия резко популяризировала удаленку
    • ~35% сотрудников перешли на удаленку и не готовы возвращаться в офис (лучше увольнение, чем возврат в офис)
  • Резко обострилась конкуренция в банковском секторе РФ в части развития ИТ-сервисов (Сбер, ВТБ, Ренессанс, Альфа, Тинькофф, МКБ и др.)
  • Банки смягчили требования в части ИБ и разрешили удаленку
  • Острая потребность в ресурсах и удаленка открыла для банков региональные рынки труда
  • Банки стали предлагать удаленщикам из регионов московские зарплаты
  • Банки стали нанимать удаленный персонал низкой квалификации для реализации будущих проектов
    • Конкуренция за региональные ресурсы привела к резкому росту зарплат по всей стране (по нашим оценкам на 30-60%)
       

 

Что имеем по итогам 2021

  • Регионального рынка труда больше не существует – теперь существует только федеральный рынок
  • Чтобы получать московскую зарплату сотрудникам больше не надо переезжать в Москву
  • Рынок монополизируется федеральными игроками, которые выдавливают мелких игроков с рынка
  • Текучка персонала в регионах до 30% в год

 

 Какие перспективы?

  • Замена федерального рынка труда глобальным рынком (будем конкурировать за сотрудников с Google, Tesla и им подобными, которые платят в валюте)
  • Дальнейший рост зарплат и обострение конкуренции за ресурсы
  • Снижение лояльности персонала
  • Отчаянный хантинг, как обыденная практика
  • Истощение ИТ-ресурсов в госсекторе


Мой сайт - www.msmirnov.ru

вторник, 2 августа 2016 г. - www.msmirnov.ru

UML - быстрый старт. Теперь можно скачать бесплатно в формате pdf.

Давным давно, 8 лет назад, я поместил в свой блог короткую методичку "UML - Быстрый старт", которую я использовал для обучения сотрудников языку UML.

Методичка оказалась очень популярной и вот уже 8 лет я продолжаю получать благодарности, что, конечно же, очень приятно и необычно.

Я решил оформить методичку в виде PDF-документа, так чтобы кто угодно мог скачать ее и пользоваться.

Методичка доступа для загрузки по следующей ссылке:
http://www.msmirnov.ru/public/UML_quick_start.pdf



Мой сайт - www.msmirnov.ru

понедельник, 25 апреля 2016 г. - www.msmirnov.ru

Scrum Fundamentals Certified

На выходных сдал экзамен на сертификат Scrum Fundamentals от PMStudy.

Экзамен был довольно простой, подготовка заняла примерно три недели и состояла, в основном, в чтении Scrum Book of Knowledge и немного дополнительно wikipedia по Методу освоенного объема, а также о NPV, IRR и т.п..

А вот и сам сертификат:




Мой сайт - www.msmirnov.ru

воскресенье, 15 февраля 2015 г. - www.msmirnov.ru

Вебинар Елены Резановой "Work-life balance для занятых"

Сегодня принял участие в вебинаре Елены Резановой "Work-life balance для занятых".

Краткий (всего 1 час) и очень полезный вебинар, помогающий произвести определение желаемого Work-life balance (т.е. целеполагание), определить текущее состояние и наметить средства достижения своего желаемого Work-life balance.

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

Видео запись вебинара доступна здесь - https://www.youtube.com/watch?v=ecfus4cQ95I



P.S. У кого есть вышеописанная проблема с энергией, то рекомендую также к прочтению книжку "Эссенциализм. Путь к простоте" Грег МакКеон
Мой сайт - www.msmirnov.ru

воскресенье, 29 июля 2012 г. - www.msmirnov.ru

Вебинар Дмитрия Безуглова "Карьерный путь Product Manager"

Сегодня посмотрел весьма толковый вебинар Дмитрия Безуглова "Карьерный путь Product Manager".

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

Последнее время, как мне кажется, наблюдается некоторый дефицит полезных вебинаров.

А этот  рекомендую посмотреть по вот этой ссылке: http://www.system-approach.ru/2012/07/product-manager-careerpath/ или на YouTube:
Мой сайт - www.msmirnov.ru

четверг, 20 октября 2011 г. - www.msmirnov.ru

70-433

Эх, давненько я не брал в руки шашек!

Позавчера сдал экзамен 70-433 “Microsoft SQL Server 2008, Database Development”.

При этом набрал максимальный балл – 1000 из 1000 возможных.

Экзамен, в общем-то, не сложный, но все равно приятно Улыбка

Мой сайт - www.msmirnov.ru

четверг, 11 августа 2011 г. - www.msmirnov.ru

Шаблон договора на разработку сайта - в помощь фрилансеру

В помощь фрилансерам выкладываю шаблон договора для заключение контрактов на разработку сайтов.
Скачать шаблон договора можно по следующей ссылке: http://www.msmirnov.ru/public/ContractForSite.doc

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

Текст шаблона привожу ниже.


Договор № _______
на проведение работ по разработке интернет-сайта «___________».

г. ______________________                                                                            «__» __________ 20__ г.

___________________________________________________________, зарегистрирован(а) по адресу _________________________________________________________________, с одной стороны, и
_______________________________________________________________________________________________________________________________________________________, с другой стороны,
вместе и по отдельности именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем.
 1.                     ПРЕДМЕТ ДОГОВОРА
1.1.       Исполнитель по поручению Заказчика выполняет работы по разработке и внедрению интернет-сайта «______________» в объеме, определяемом Приложением №1 к настоящему Договору «Техническое задание», в сроки, предусмотренные Приложением №2 к настоящему Соглашению, «Календарный план».
2.                     ОБЯЗАННОСТИ ИСПОЛНИТЕЛЯ
Исполнитель обязуется:
2.1.       оказать услуги в соответствии с разделом 1 настоящего Договора;
2.2.       сформировать рабочую группу из числа сотрудников Исполнителя, в которой определить ответственных за оказание услуг в целом и на конкретных участках.
3.                     ОБЯЗАННОСТИ ЗАКАЗЧИКА
Заказчик обязуется:
3.1.       оплатить оказанные услуги в размерах и в сроки, установленные настоящим Договором;
3.2.       выпустить приказ о формировании группы сопровождения проекта, ответственной за своевременное и правильное выполнение обязательств по настоящему Договору со стороны Заказчика. В данной группе определяется ответственный исполнитель. Список членов группы, копии приказа о назначении ответственного исполнителя передать Заказчику в течение 5 дней с даты подписания настоящего Договора.
3.3.       обеспечить согласование документов в сроки, определенные Календарным планом (Приложение №2 к настоящему Соглашению).
3.4.       при наличии согласованной Сторонами необходимости, обеспечить сотрудникам Исполнителя возможность оказания услуг в помещениях Заказчика не менее 10 (десяти) рабочих часов в сутки по рабочим дням и в выходные дни;
3.5.       обеспечить сотрудникам Исполнителя, прибывшим на объекты Заказчика для оказания услуг по Договору, безопасные условия труда и проведения инструктажей в соответствии с правилами техники безопасности.
3.6.       Предоставлять по запросу сотрудников Исполнителя, выполняющих работы, необходимые данные, документы и материалы в согласованные сроки и в согласованном объеме.
4.                     СТОИМОСТЬ РАБОТ И ПОРЯДОК РАСЧЕТОВ
4.1.       Общая стоимость работ Исполнителя по настоящему Договору составляет ____________________ рублей.
4.2.       Заказчик выплачивает аванс в размере ________________ рублей в сроки определенные в Приложении № 2 к настоящему Договору, «График работ».
4.3.       Сумму, эквивалентную __________________ рублей, Заказчик оплачивает в сроки определенные в Приложении № 2 к настоящему Договору, «График работ».
4.4.       Дополнительные работы по проекту осуществляются из расчета ________ руб / чел.час. При этом исполнитель предоставляет перечень дополнительно выполненных работ с указанием даты их проведения и стоимости. Оплата дополнительных работ производится в течении _____ рабочих дней со дня предоставления перечня.
5.                     СРОКИ ОКАЗАНИЯ УСЛУГ
5.1.       Сроки работ определяются Приложением № 1 к настоящему Договору, «Календарный план».
5.2.       В случае задержки предоставления Заказчиком исходных данных (п. 3.6) срок действия Договора и сроки выполнения обязательств Исполнителем переносится на время задержки.
5.3.       Сроки оказания услуг могут быть изменены в процессе их оказания только по соглашению Сторон.
5.4.       При появлении новых деталей и обстоятельств, не указанных в Техническом задании, стоимость и время разработки проекта будет увеличено в соответствии с пунктом 4.4 настоящего Договора.

 6.                     ПОРЯДОК СДАЧИ-ПРИЕМКИ
6.1.       Исполнитель обязан своевременно оказать услуги.
6.2.       Оказанные по настоящему Договору услуги Заказчик принимает путем подписания Акта сдачи-приемки услуг, оформляемого в 2 (двух) экземплярах.
7.                     ОТВЕТСТВЕННОСТЬ СТОРОН
7.1.       Исполнитель не несет ответственность за невыполнение или несвоевременное выполнение им обязательств по настоящему Договору, вызванное не предоставлением ему ответственными представителями Заказчика необходимой информации, либо предоставлением неполной или некорректной информации.
8.                     Гарантийные обязательства
8.1.       Исполнитель предоставляет услуги гарантийной поддержки программного обеспечения разработанного по настоящему Договору. Гарантийная поддержка включает исправление обнаруженных ошибок в работе разработанных или доработанных Исполнителем частей программного обеспечения без изменения согласованного перечня требований к соответствующему программному обеспечению, зафиксированных Сторонами при выполнении работ по настоящему Договору к нему, при условии соблюдения Заказчиком порядка эксплуатации программного обеспечения, описанного в эксплуатационной документации к нему.
8.2.       Гарантийные обязательства Исполнителя теряют силу в случае внесения изменений в находящееся на гарантийной поддержке программное обеспечение силами Заказчика или третьих лиц.
8.3.       Под ошибкой понимается несоответствие документации функционалу программного обеспечения (ошибка в документации) либо систематическое невыполнение или некорректное выполнение функций программы (ошибка в коде), которое отвечает одному из критериев:
8.3.1. не соответствует документации на программное обеспечение;
8.3.2. явно присутствует (проявляется) в обслуживаемом программном обеспечении;
8.3.3. не является явным следствием одного или нескольких обстоятельств:
8.3.3.1.    ошибочного пользования программное обеспечение;
8.3.3.2.    несанкционированного изменения или дополнения ПО;
8.3.3.3.    сбоя смежного программного либо аппаратного обеспечения;
8.3.3.4.    недостаточности аппаратных или телекоммуникационных ресурсов;
8.3.3.5.    неисправности или изменения оборудования, на котором ПО установлено;
8.3.4. не является следствием изменения регламентов деловых процессов Заказчика.
8.4.       Гарантийный срок составляет ________ месяцев с даты подписания Сторонами Акта сдачи-приемки выполненных работ.
9.                     ИМУЩЕСТВЕННЫЕ ПРАВА
9.1.       Заказчику принадлежат исключительные имущественные права на разработанное по настоящему Договору программное обеспечение интернет-сайта «_______________________».
9.2.       Исключительные права Сторон и иных Правообладателей на программные средства, программное обеспечение и иные объекты интеллектуальной собственности, использованные при выполнении работ по настоящему Договору, сохраняются за соответствующими Сторонами и соответствующими Правообладателями.
10.                   ПРОЧИЕ УСЛОВИЯ
10.1.   Настоящий Договор вступает в силу с момента его подписания Сторонами и действует до выполнения ими принятых на себя обязательств.
10.2.   Договор в письменной форме. Письменная форма считается выполненной при наличии подписей уполномоченных лиц и оттисков печатей Сторон.
10.3.   Настоящий Договор составлен в двух экземплярах, имеющих одинаковую юридическую силу и по одному для каждой Стороны.
10.4.   Настоящий Договор может быть изменен либо дополнен на основании письменного соглашения Сторон.
10.5.   Все Приложения, Дополнения и Соглашения к настоящему Договору являются неотъемлемой его частью и действительны при условии соблюдения письменной формы и подписей сторон.
11.                   ПРИЛОЖЕНИЯ
11.1.   Все перечисленные ниже Приложения к настоящему Договору являются его неотъемлемой частью и действительны при наличии подписей должностных лиц, наделенных правом подписи данных документов и оттисков печатей Сторон.
11.1.1.  Приложение № 1 - «Техническое задание»
11.1.2.  Приложение № 2 - «Календарный план»
12.                   ЮРИДИЧЕСКИЕ АДРЕСА И БАНКОВСКИЕ РЕКВИЗИТЫ СТОРОН
Заказчик:


Исполнитель:














«____» ___________ 20___ г.


«____»____________ 20___ г.
Приложение № 1

«ТЕХНИЧЕСКОЕ ЗАДАНИЕ»

Техническое задание включает в себя следующие пункты:
Приложение № 2

«КАЛЕНДАРНЫЙ ПЛАН »

№ этапа
Наименование этапа
Сроки выполнения работ
Стоимость Работ, руб.
















Итого за работы:



* Примечание: Формы представления результатов работ, требования к их составу, содержанию и оформлению устанавливаются Руководителями проекта (п. 4.1 Договора) в рабочем порядке.








 ОТ ЗАКАЗЧИКА
 «____» ___________ 2011 г.

ОТ ИСПОЛНИТЕЛЯ
«____»____________ 2011 г.





Мой сайт - www.msmirnov.ru

пятница, 15 июля 2011 г. - www.msmirnov.ru

Китайский код

Не смог удержаться, чтобы не запостить небольшой образчик китайского кода, который попался на глаза мне на днях.
Это не прикол – это реальный кусочек кода приложения.


            string s = Request.QueryString["action"];
            // s may have "restore" or "remove" values

            switch (s[2])
            {
                case 's':
                case 'S':
                    ..............
                    break;

                case 'm':
                case 'M':
                    ..............
                    break;

            }


Как говорится, это было бы смешно, если бы не было так грустно……
Мой сайт - www.msmirnov.ru

пятница, 11 марта 2011 г. - www.msmirnov.ru

Индийский код

Некоторое время назад мне пришлось столкнуться с достаточно большим объемом кода, написанного индийскими товарищами.

Это был мой первый опыт и, к сожалению, впечатление у меня сложилось не самое лучшее.

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


А теперь конкретные замечания по коду:
1. Очень большой объем дублирования кода. Видно, что Copy-Paste используется очень активно.
Идентичные куски кода повторяются и не выделяются в отдельные функции.

2. Очень длинные многостраничные методы. Отсутствует разбиение на мелкие методы.

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

4. Размытие слоев приложения – например, SQL-код генерируется во всех слоях приложения, вплоть до JavaScript’а, исполняемого в браузере.

5. Активное использование именований переменных, при котором первым символом обозначается тип переменной. Например, int iID или string sName. На мой взгляд очень неудобно.

6. Слабое понятие о нормализации баз данных. Большое количество дублирования данных в БД.

7. Именование всех полей в базах данных в верхнем регистре. Например, AUTHOR_NAME.
Мой сайт - www.msmirnov.ru

пятница, 10 сентября 2010 г. - www.msmirnov.ru

HP нас подводит...

С начала лета используем три довольно серъезных сервера HP ProLiant DL380 G6 (http://h10010.www1.hp.com/wwpc/ru/ru/sm/WF06a/15351-15351-3328412-241475-241475-3884082.html).
На каждом сервере установлено по 8 SAS-дисков HP EG0300FARTT.

Дак вот - диски мрут с завидной регулярностью.
За три месяца умерло три диска.

Если бы не грамотный RAID и резервные копии, потери данных были бы смертельными.

Вот вам и брэнд...
Мой сайт - www.msmirnov.ru

понедельник, 23 августа 2010 г. - www.msmirnov.ru

Фотографии...

На днях мой фотик Sony Cybershot DSC-R1 сбросил счетчик фотографий, достигнув значения 10 000. Получается что за прошедшие 4 года я делал примерно 7 фотографий в день...
Мой сайт - www.msmirnov.ru

пятница, 1 февраля 2008 г. - www.msmirnov.ru

UML – быстрый старт

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

1.     Введение.

UML – это Unified Modeling Language, как следует из названия – унифицированный язык моделирования. UML представляет собой набор соглашений, которые предназначены для облегчения процесса моделирования и обмена информацией в проектной группе. Наличие стандартизированной нотации позволяет сократить время на усвоение информации, упрощает общение и взаимодействие, облегчает документирование.
В этом документе описаны самые основные разделы языка UML, которые потребуются в повседневной работе.

2.     Основы.

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

3.     Описание типов диаграмм.

3.1.          Диаграмма вариантов использования (Use-case diagram).

Диаграмма вариантов использования является отправной точкой в процессе моделирования. Она предназначена для описания взаимодействия проектируемой системы с любыми внешними или внутренними объектами - пользователями, другими системами и т.п.
Основными понятиями при работе с диаграммой вариантов использования являются Актор (Actor) и Вариант использования (Use case).
Актор – это роль, которую выполняет пользователь или другая система, при взаимодействии с проектируемой системой.
Проектирование диаграммы вариантов использования начинается с определения списка Акторов. На диаграммах Актор обозначается следующим значком:
image
Каждый Актор обладает уникальным именем.
Друг с другом акторы могут быть связаны различного рода отношениями.
Например, акторы могут наследоваться друг от друга.
image
Это означает, что акторы-наследники наследуют характеристики базовых акторов.
Следующим этапом после определения списка акторов является определение списка вариантов использования.
Вариант использования – это конечная единица взаимодействия актора и системы. Совокупность всех вариантов использования полностью определяет поведение системы.
Вариант использования обозначается значком:
image
Каждый вариант использования относится к каком-либо актору. Такое отношение обозначает, что данный актор инициирует данный вариант использования.
Например:
image
означает, что актор User инициирует вариант использования Login.
Один и тот же вариант использования может использоваться несколькими акторами, например:
image
вариант использования Login используется двумя акторами.
Варианты использования также могут быть связаны друг с другом различными отношениями.
1.       «Включение» одного варианта использования в другой. Означает, что один вариант использования инициируется в процессе другого. Например:
image
2.       «Расширение».  Означает, что один вариант использования является дополнением или уточнением другого варианта использования в случае наступления некоторых условий. Например:
image
3.       «Реализация». Означает, что один вариант использования является реализацией другого варианта использования. Например, если один из них описан в терминах бизнес-процессов, а другой – в терминах проектируемой системы.
Например:
image
Кроме того, варианты использования могут быть связаны отношением «Реализация» с требованиями к системе и с классами. При наличии таких связей есть возможность проследить в каких классах реализованы требования и какие классы могут быть затронуты при изменении требований или вариантов использования.
Например:
image
Кроме Акторов и Вариантов использования на диаграмме также могут находиться следующие элементы:
“Collaboration” – элемент, предназначенный для визуальной группировки объектов – акторов и вариантов использования – по принципу их совместной работы.
Обозначается значком
image
Например,
image
«Boundary» - элемент, предназначенный для визуальной группировки объектов – акторов и вариантов использования – по принципу их распределения на подсистемы или компоненты.
Обозначается значком
image
Например:
image

Среди акторов могут быть не только пользователи, но и внешние системы и внутренние подсистемы.
Пример внутренней подсистемы:
image

3.2.                     Диаграмма последовательностей (Sequence diagram)

Диаграмма последовательностей служит основным способом расшифровки последовательности действий в процессе выполнения того или иного варианта использования.
Иными словами, если вариант использования отвечает на вопрос «Что делает актор?», то последовательность отвечает на вопрос «Как работает система при выполнении данного варианта использования?».
Таким образом, диаграмма последовательностей всегда создается в привязке к варианту использования. Каждый вариант использования может содержать несколько диаграмм последовательностей, на тот случай, если они описывают несколько альтернативных вариантов развития событий.
Диаграмма последовательностей, так же, как и вариант использования, может быть реализована как в терминах бизнес-объектов, так и в терминах физических сущностей, таких как компоненты или классы.
Проще всего продемонстрировать суть диаграммы последовательностей на примере:
image
Диаграмма последовательностей всегда начинается с актора, инициирующего процесс. Вверху диаграммы располагаются элементы, классы или компоненты, которые задействованы в процессе работы.
На самой диаграмме показаны линии жизни каждого из объектов и процесс их взаимодействия.
Взаимодействие объектов показано стрелками. В терминах диаграмм последовательностей такое взаимодействия называется Сообщение (Message) В приведенном примере под сообщением понимается вызов методов тех или иных классов. При этом, как видно на примере, сообщения могут быть вложены друг в друга, что означает, что один метод вызывается в теле другого.
Кроме сообщений, которые вызываются другими объектами, существуют собственные сообщения, которые объект вызывает сам у себя (Self-message).
Например:
image
Кроме того, существуют также обратные сообщения (Return message), которые обозначают передачу некоторой информации вызывающему сообщению. В терминах классов это означает возврат некоторого значения.
Например:
image
На этой диаграмме метод возвращает результаты своей работы.
Собственные сообщения также могут быть обратными.
Таким образом, к основным объектам диаграмм последовательностей относятся акторы, объекты-участники процесса, линии жизни и сообщения.
Сообщения могут объединяться в комбинированные фрагменты (Combined fragment), который предназначен для отображения циклов, ветвлений, критических секций и пр.
Пример ветвления:
image
Пример цикла:
image
Некоторые сообщения могут заканчиваться Конечными точками (End point), которые означают выход из алгоритма.
Пример:
image
В качестве участника диаграммы могут выступать не только классы, но и любые другие объекты – например, варианты использования в тех случаях, когда есть необходимость продемонстрировать включение или расширение.
Например:
image

3.3.                     Диаграмма классов

В отличие от двух предыдущих поведенческих диаграмм, диаграмма классов носит структурный характер. Она предназначена для отображения классов разрабатываемого приложения и их взаимосвязей.
Так же как и предыдущие диаграммы она может быть представлена как в терминах конкретных классов, так и в терминах бизнес-объектов.
Диаграммы классов обычно заполняются параллельно с диаграммами последовательностей в процессе моделирования работы вариантов использования.
Основным элементом диаграммы классов является класс.
Обозначается значком:
image
Класс состоит из двух частей – заголовка с именем класса и тела с описанием его полей (Атрибуты – в терминах UML) и методов (Операции - в терминах UML).
Абстрактные классы отличаются наклонным написанием заголовка:
image
Под атрибутами класса в терминологии UML понимают его поля.
Атрибуты записываются с указанием доступности, имени и типа.
Например:
image
Знак «-» означает, что атрибут является приватным (private).
Знак «+» означает, что атрибут является публичным (public).
Знак «#» означает, что атрибут является защищенным(protected).
После имени следует указание типа атрибута.
Под операциями в терминологии UML понимаются методы, свойства, индексаторы и пр.
Операции также записываются с указанием области видимости, имени и возвращаемого типа. Однако для них также указывается перечень принимаемых значений.
Например:
image
Статические атрибуты и операции записываются с подчеркиванием, например:
image
Абстрактные методы записываются наклонным шрифтом, например:
image
Кроме классов, важным элементом диаграмм классов являются интерфейсы.
Интерфейс обозначается так:
image
Кроме классов и интерфейсов на диаграмме классов также могут помещаться перечисления.
Перечисление обозначается так:
image
Обычно перечисление указывается с перечнем возможных значений, например:
image
На диаграмме классов отображаются не только классы, интерфейсы и пр., но и их взаимосвязи.
Взаимосвязи бывают различных типов и отображаются, соответственно, по-разному.

Генерализация или наследование (Generalize) обозначается так:
image
На примере показано, что два класса являются наследниками абстрактного класса.
Реализация (Realize) – означает, что данный класс реализует данный интерфейс:
image
Ассоциация (Associate). Наиболее широко используемая связь между классами. Она имеет достаточно широкое значение и может означать, например, следующее:
1.       Один класс осуществляет взаимодействие с другим каким-либо образом.
Например:
image
2.       Один класс включает в себя экземпляр другого класса.
Например:
image
Видим, что перечисление Status включено в класс User, при этом имя поля Status, с областью видимости public.
3.       Один класс включает в себя несколько экземпляров другого класса.
Например:
image
Видим, что коллекция UsersCollection может включать от нуля до бесконечности объектов User.
Возможные значения количества объектов:
·         «*» или «0..*» - любое количество объектов
·         «0..n» - любое количество объектов, но не больше n, например «0..5»
·         «n» - точное количество объектов, например «1», «5»
·         «n..*» - любое количество объектов, но не меньше n, например«1..*» - хотя бы один.
Если Ассоциация не может быть реализована без дополнительных классов (например, отношение «многие-ко-многим»), то она реализуется при помощи дополнительных классов ассоциации, которые предназначены решить эту задачу.
Обозначается это следующим образом:
image
В данном примере вы видите, что для того, чтобы установить связь «многие-ко-многим» между переводчиками (класс Translator) и языками (класс Language) используется вспомогательный класс TranslatorToLanguage.

Композиция (Compose)  - означает, что объекты одного класса могут быть включены в объекты другого класса и при этом этот вложенный объект может находиться только в одном объекте-контейнере. Если объект контейнер удаляется, то вложенный объект тоже удаляется.
Например:
image
Агрегация (Aggregate) - означает, что объекты одного класса могут быть включены в объекты другого класса и при этом этот вложенный объект может находиться в нескольких объектах-контейнерах. Если объект контейнер удаляется, то вложенный объект не удаляется.
Например:
image
Для большей наглядности кроме стандартного значка класса, есть также дополнительные значки, которые применяются для некоторых типов классов. Я привел здесь три наиболее часто используемых обозначения, которые применяются для работы с шаблоном «Модель-Представление-Контроллер»
1.       Класс-сущность (Entity) – обычно применяется для обозначения классов, которые хранят некую информацию о бизнес-объектах.
Обозначается:
image
2.       Класс-контроллер (Controller) – обычно используется для классов, которые используются для выполнения некоторых операций над объектами.
Обозначается:
image
3.       Класс-Разграничитель (Boundary) – обычно используется для классов, отделяющих внутреннюю структуру системы от внешней среды. Это могут быть WebServices, пользовательский интерфейс и пр.
Обозначается:
image

3.4.          Диаграмма коммуникаций

Данный тип диаграмм также относится к поведенческим диаграммам и предназначен для описания коммуникаций между элементами системы. Диаграмма коммуникаций позволяет наглядно представить какие элементы системы задействованы при выполнении некоторой задачи и каким образом организовано их взаимодействие.
Диаграмма коммуникаций, так же как и диаграмма последовательностей, обычно создается в привязке в варианту использования, который она описывает. Отличие от диаграммы последовательностей состоит в том, что диаграмма коммуникаций предназначена для отображения взаимодействия между инстанцированными объектами, в то время как диаграмма последовательностей описывает функционирование и структуру классов.
Обозначения, которые используются для отображения объектов на диаграмме коммуникаций – те же, что и для классов на диаграмме классов.
Проще всего привести описание диаграммы коммуникаций на примере:
image
На примере видим, что актор User взаимодействует с экземпляром страницы LoginPage, который в свою очередь работает с классом SecutiryManager, который оперирует объектами типа User.
Элементы диаграммы коммуникаций могут быть связаны отношением «Ассоциация». Как я уже указывал выше Ассоциация имеем достаточно широкое значение и может трактоваться по разному (см. Диаграммы классов).
Однако, в отличие от диаграмм последовательностей, где порядок инициации сообщений определяется шкалой времени, на диаграммах коммуникаций используется нумерация ассоциаций, которая определяет этот порядок.
Например:
image

3.5.          Диаграммы состояний. (State diagram или State Machine)

Диаграммы состояний обычно применяются для иллюстрации того, как какой либо один элемент (обычно, один инстанцированный класс) переходит между различными своими состояниями. Диаграммы состояний также могут применяться как для описания состояний классов, так и бизнес-объектов.
Обычно диаграммы состояний имеют вспомогательную функцию и создаются в дополнение к другим поведенческим диаграммам.
Диаграммы состояний состоят из элементов двух основных типов: Состояний и Переходов.
Элемент Состояние (State) отображает состояние объекта или процесса в какой-либо момент времени.
Обозначается значком:
image
Название Состояния является его описанием, т.е., например, состояние
image
означает, что пользователь находится в «незалогиненном» состоянии.

Переход (Transition) – элемент, отображающий путь перехода из одного состояния в другое.
Например:
image

Для обозначения начала и конца всего процесса переходов используются псевдо-состояния: Инициирующее (Initial)
image
и Финализирующее (Final)
image
Применятся они могут, например, так:
image
Если Состояние сопряжено с некоторой деятельностью, то это тоже отображается на диаграмме.

Например:
image


Если из одного Состояния возможно несколько переходов в несколько других различных состояний, то это тоже отображается на диаграмме. Как правило, в этом случае переходы именуются по своему смыслу. Например, по результатам деятельности.
Например:
image
На примере видим, что после проверки логина и пароля пользователь может быть принят или отвергнут.
Другой вариант того же самого примера:
image
Этот пример отличается от предыдущего тем, что после ввода неверных данных пользователю больше не предлагается ввести свои данные.
Переход также может осуществляться между одним и тем же состоянием.
Например:
image
Кроме обычных Состояний (State) существуют также Суперсостяния (State Machine), которые могут включать в себя другие состояния и переходы.
При этом контекст Суперсостояния является актуальным для всех элементов, находящихся внутри этого Суперсостояния.
Например:
image
Суперсостояние само по себе может иметь переходы в другие состояния. В этом случае считается, что из любого Состояния внутри Суперсостояния может быть осуществлен такой переход.
Например:
image
На одной диаграмме состояний может быть отображено несколько одновременных состояний одного и того же объекта, если эти состояния изменяются параллельно друг другу.
Например (из книги Фаулера):
image
Если несколько параллельных потоков переходов должны быть синхронизироваться в какой-то момент, то для это используется псевдо-состояние Synch
image
Существует также дополнительный элемент Fork/Join – используется для разбивки или объединения нескольких потоков состояний.
Например:
image
image

3.6.          Диаграммы деятельности. (Activity diagram)

Диаграммы деятельности относятся к диаграммам, описывающим поведение системы. Они во многом родственны диаграммам состояний и имеют множество сходных элементов, но выполняют несколько другую функцию. Диаграммы деятельности предназначены для описания потоков и последовательностей выполнения работ по реализации некоторого варианты использования. В отличие от диаграмм состояний, диаграммы деятельности принимают во внимание не состояние некоторого объекта, а потоки деятельности.
Обычно для диаграммы деятельности используются для описания сложных алгоритмов, бизнес-процессов, вариантов использования и пр. Диаграммы деятельности могут быть выражены как в терминах объектов системы, так и в терминах бизнес-объектов.
Основным объектом диаграмм активностей является Активность (Activity), которая обозначается следующим значком:
image
Диаграммы активностей имеют те же элементы, что и диаграммы состояний, а именно: псевдо-активности начала и конца потоков, переходы, Fork/Join, Суперактивности.
Пример:
image
На примере показан поток работ по работе с клиентом. Здесь видно, что диаграмма не посвящена состояниям только одного элемента или объекта – вместо этого она отражает поток деятельностей, который затрагивает различные элементы или подсистемы.
Кроме того, на этой диаграмме присутствует новый элемент Решение (Decision) –
image
Этот элемент знаком нам по блок-схемам и обозначает момент ветвления или соединения потоков.  Отличие от Fork/Join состоит в том, что процесс продолжается только по одной ветке, в то время как после Fork/Join – по всем веткам параллельно.
Существенным дополнением диаграммы деятельности является элемент Partition, который сам по себе логического значения не имеет и предназначен для визуальной группировки работ по какому-либо признаку.
Обозначается значком:
image
Например:
image
На примере видно, что потоки работ условно сгруппированы в работу по обработке заказа и по проведению платежа.
Кроме обычных активностей, есть несколько дополнительных:
1.       Отправка (Send) – используется для отображения запросов к каким-либо внешним источникам.
Обозначается:

image
2.       Получение (Receive) – используется для получения информации от каких-либо внешних источников.
Обозначается:
image

Например:
image


4.     Пакеты (Packages)

Пакеты – это способ группировки любых элементов языка UML – диаграмм, вариантов использования, классов и пр.
Обычно пакеты представляют собой:
·         подсистемы, если речь идет о системе
·         компоненты или слои, если речь идет о классах
·         наборы бизнес-логики, если речь идет о вариантах использования и т.п. 
Конкретный способ группировки элементов в пакеты остается на усмотрение проектировщика.
Пакет обозначается следующим образом:
image
Например, может существовать пакет Акторов -
image
в котором находятся диаграммы с перечнем Акторов.
Пакеты также могут соединяться различными видами ассоциаций для того, чтобы продемонстрировать их взаимозависимость.
Например:
image

Пакеты могут включать в себя не только объекты, но и диаграммы различных типов. Т.е. в каждом пакете могут быть свои диаграммы вариантов использования, последовательностей, классов и пр.
Мой сайт - www.msmirnov.ru